Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Token
Forum PHP.pl > Forum > PHP
moto0095
Witam znalazłem ostatnio i przerobiłem pewien token.
Tylko nie wiem jak dodać do niego jakieś plamki, kreski itp. w tle.
oto kod:
  1. <?php
  2. session_start(); //rozpoczecie sesji
  3. header ('Content-type: image/png'); //wyslanie naglowkow do przegladarki
  4. header ('Expires: '.gmdate ('r', 0));
  5. header ('Last-Modified: '.gmdate ('r'));
  6. header ('Cache-Control: no-store, no-cache, must-revalidate');
  7. header ('Pragma: no-cache');
  8.  
  9. $chars = array(1,2,3,4,5,6,7,8,9,'e','r','t','u','i','p','a','g','h','j','z','c','b','n','m'); //Lista znakow
  10.  
  11. for($i = 0; $i < 6; $i++) //Losowanie znakow
  12. {
  13. $text .= $chars[array_rand($chars)];
  14. }
  15.  
  16. $_SESSION['token'] = $text;
  17. //Tworzenie obrazka
  18. $image = imagecreatetruecolor(100, 32);
  19. $background = imagecolorallocate($image, 0, 0, 0);
  20.  
  21. imagefill($image, 0, 0, $background);
  22.  
  23. $textcolor = imagecolorallocate($image, 255, 255, 255);
  24. imagestring($image, 10, 25, 8, $text, $textcolor);
  25.  
  26. imagepng($image);
  27.  
  28. imagedestroy ($Image);
  29. ?>
Wicepsik
Poczytaj o bibliotece GD
moto0095
Czytałem.
Ale poprostu coś mi nie wychodzi.sad.gif
Pomocy exclamation.gif
Wicepsik
imageline
moto0095
Wiem że to ta funkcja tylko nie wiem jak ją podpiąć.

Okey poradziłem sobie jakoś.
Oto kod może się komuś przyda smile.gif
  1. <?
  2. $pool = '0123456789abcdefghijklmnopqrstuvwxyz';
  3. $img_width = 120;
  4. $img_height = 30;
  5.  
  6. $str = '';
  7. for ($i = 0; $i < 7; $i++){
  8. $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
  9. }
  10.  
  11. $string = $str;
  12. $_SESSION['captcha'] = $string;
  13.  
  14. $im = imagecreate($img_width, $img_height);
  15.  
  16. $color1 = rand(0,150);
  17. $color2 = rand(0,150);
  18. $color3 = rand(0,150);
  19.  
  20. $colorbg1 = rand(0,150);
  21. $colorbg2 = rand(0,150);
  22. $colorbg3 = rand(0,150);
  23.  
  24. $colorfont1 = rand(200,255);
  25. $colorfont2 = rand(200,255);
  26. $colorfont3 = rand(200,255);
  27.  
  28. $bg_color = imagecolorallocate($im,$colorbg1,$colorbg2,$colorbg3);
  29. $font_color = imagecolorallocate($im,$colorfont1,$colorfont2,$colorfont3);
  30. $grid_color = imagecolorallocate($im,$color1,$color2,$color3);
  31. $border_color = imagecolorallocate ($im, 174, 174, 174);
  32.  
  33. imagefill($im,1,1,$bg_color);
  34.  
  35.  
  36. ImageLine($im,90,0,90,30,$grid_color); //1
  37. ImageLine($im,10,0,10,30,$grid_color); //2
  38. ImageLine($im,20,0,20,30,$grid_color); //1
  39. ImageLine($im,30,0,30,30,$grid_color); //1
  40. ImageLine($im,40,0,40,30,$grid_color); //1
  41. ImageLine($im,50,0,50,30,$grid_color); //1
  42. ImageLine($im,60,0,60,30,$grid_color); //1
  43. ImageLine($im,70,0,70,30,$grid_color); //1
  44. ImageLine($im,80,0,80,30,$grid_color); //1
  45. ImageLine($im,90,0,90,30,$grid_color); //2
  46. ImageLine($im,100,0,100,30,$grid_color); //1
  47. ImageLine($im,110,0,110,30,$grid_color); //1
  48. ImageLine($im,120,0,120,30,$grid_color); //1
  49.  
  50. ImageLine($im,0,0,-80,30,$grid_color); //1
  51. ImageLine($im,10,0,-70,30,$grid_color); //1
  52. ImageLine($im,20,0,-60,30,$grid_color); //1
  53. ImageLine($im,30,0,-50,30,$grid_color); //1
  54. ImageLine($im,40,0,-40,30,$grid_color); //1
  55. ImageLine($im,50,0,-30,30,$grid_color); //1
  56. ImageLine($im,60,0,-20,30,$grid_color); //1
  57. ImageLine($im,70,0,-10,30,$grid_color); //1
  58. ImageLine($im,80,0,0,30,$grid_color); //1
  59. ImageLine($im,90,0,10,30,$grid_color); //1
  60. ImageLine($im,100,0,20,30,$grid_color); //1
  61. ImageLine($im,110,0,30,30,$grid_color); //1
  62. ImageLine($im,120,0,40,30,$grid_color); //1
  63. ImageLine($im,130,0,50,30,$grid_color); //1
  64. ImageLine($im,140,0,60,30,$grid_color); //1
  65. ImageLine($im,150,0,70,30,$grid_color); //1
  66. ImageLine($im,160,0,80,30,$grid_color); //1
  67. ImageLine($im,170,0,90,30,$grid_color); //1
  68. ImageLine($im,180,0,100,30,$grid_color); //1
  69. ImageLine($im,190,0,110,30,$grid_color); //1
  70. ImageLine($im,200,0,120,30,$grid_color); //1
  71.  
  72. ImageLine($im,0,5,120,5,$grid_color); //1
  73. ImageLine($im,0,10,120,10,$grid_color); //1
  74. ImageLine($im,0,15,120,15,$grid_color); //1
  75. ImageLine($im,0,20,120,20,$grid_color); //1
  76. ImageLine($im,0,25,120,25,$grid_color); //1
  77.  
  78.  
  79. $x = rand(7, $img_width/(7/2));
  80.  
  81. imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);
  82.  
  83. for($a=0; $a < 7; $a++){
  84.  
  85. imagestring($im, 5, $x, rand(8 , $img_height/7), substr($string, $a, 1), $font_color);
  86. $x += (5*2); #odstęp
  87.  
  88. }
  89.  
  90. header("Content-type: image/gif");
  91. imagegif($im);
  92. imagedestroy($im);
  93.  
  94. ?>


Aby nie zaczynać nowego tematu to zapytam się tutaj.
Jak zrobić odświeżanie tego tokena po kliknięciu na przycisk np: "Inny", ale bez przeładowania strony (wiem że można to zrobić w ajaxie tylko ja nie znam go w ogóle ) questionmark.gifquestionmark.gifquestionmark.gif
marcio
O petli for/while to slyszales?Bo te 20-30 linijek koduj mozna zastapic 2-3 :]

Cytat
Jak zrobić odświeżanie tego tokena po kliknięciu na przycisk np: "Inny", ale bez przeładowania strony (wiem że można to zrobić w ajaxie tylko ja nie znam go w ogóle )

Kod
<input type="button" onClick="java script: location.reload();" value="Zmien">

Chyba tak to sie robilo ale reki nie dam sobie uciac biggrin.gif
moto0095
No coś nie za bardzo to działa sad.gif. Jakieś inne pomysły questionmark.gif

Chodzi mi o coś takiego jak tutaj: http://ilustratum.pl/scripts/skrypty/token_ajax/index.php.
Wie ktoś ja to zrobić questionmark.gifquestionmark.gif
tehaha
chodzi Ci cały czas o przeładowanie tak? a spróbuj
  1. <input type="button" onClick="java script: location.reload(true);" value="Przeładuj">
moto0095
Nie wiem to też nie działa. sad.gif
A może ja coś ja żle robie questionmark.gif
Jak to powinno wyglądać questionmark.gif
tehaha
a spróbuj w onclick usunąć tą spację między java script , bo ona się sama dodaje po wrzuceniu kodu do bbcode
moto0095
Działa smile.gif
Tylko to przeładowywuje cłą stronę a nie sam obrazek czy tam div sad.gif
A jak zrobić aby tylko obrazek/div preładowywało questionmark.gif
Bo szukam w google ale jakoś nic mi nie działa sad.gif
tehaha
możesz to zrobić przy pomocy biblioteki jQuery i funkcji load, wsadzisz ten obrazek do diva i wtedy załadujesz ponownie tylko wnętrze diva
crumb
A dokładniej coś takiego:

div z tokenem i przycisk reload:
  1. <div id="token">TUTAJ OBRAZEK Z TOKENEM</div><a id="reload">inny</a>


Js odpowiedzialny za przeładowanie:
  1. <script type="text/javascript">
  2. $(document).ready(
  3. function()
  4. {
  5. $("a#reload").click( function() { $("div#token").load("ADRES_PRZEŁADOWANIA"); });
  6. });

Oczywiście nie zapomnij załadować biblioteki jQuery (znajdziesz w googlach). Jak czegoś nie zapomniałem to powinno działać winksmiley.jpg.
Crozin
Skoro:
1) Nie znasz podstaw żadnej z dostępnych bibliotek graficznych dostępnych dla PHP
2) Nie znasz JavaScriptu
3) To co udało Ci się metodą Copy/Paste zrobić jest raczej słabym zabezpieczeniem

To skorzystaj z gotowych rozwiązań typu reCAPTCHA
moto0095
1) Znam podstawy GD
2) JS rzadko używam
3) Ale działa

Cytat(Crozin @ 18.04.2010, 17:37:22 ) *
To skorzystaj z gotowych rozwiązań typu reCAPTCHA


Wolę uczyć się na błędach.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.