Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Captcha
Forum PHP.pl > Forum > Przedszkole
mcfreak
Siema. Mam taki kod:
index.php
  1. <?php
  2.  
  3.  
  4. if($_POST['done']) {
  5. if ($_POST['captcha'] == $number) {
  6. echo 'wpisales poprawnie captche';
  7. } else {
  8. echo 'nie wpisales poprawnie captchy';
  9. }
  10. }
  11.  
  12. # include('captcha.php');
  13. ?>
  14.  
  15. <img src="captcha.php">
  16. <form method="post" onsubmit=""><input type="text" name="captcha" /><br /> <input name="done" type="submit" value="OK">
  17. </form>


captcha.php
  1. <?
  2. $captcha=imagecreatefromjpeg("bez.jpg");
  3. $color=ImageColorAllocate($captcha,255, 255, 255); //definiuje kolor czcionki
  4. $num = rand(1000,9999);
  5. ImageTTFText($captcha,30,0,6,32,$color,"romeo.ttf", $num); //pokazuje numer wygenerowany
  6.  
  7. Header("Content-type: image/jpeg");
  8. ImageJpeg($captcha,NULL,100);
  9. ImageDestroy($captcha);
  10. ?>


Jak to przerobić na poprawnie działająca captche, bo mimo to zawsze będzie się pokazywać błąd, że źle przepisaliśmy numerek.

Nie chcę innych poradników, jak zrobić captche, bo chcę zrobić swoją, z obrazka, a nie, że PHP za mnie zrobi kwadrat, sam wszystko wypisze etc. :]

Jak by co, wiem, że to łatwo złamać, ale ja to zmienie.

Pozdro.
sowiq
Wszystko robisz ok, ale zmienna $numer jest pamiętana tylko do czasu zakończenia działania skryptu generującego obrazek. Po wygenerowaniu captch'y (czyli po wczytaniu strony przez przeglądarkę) wszystkie zmienne są kasowane z pamięci serwera. Więc przy drugim wywołaniu strony nie może być spełniony warunek
  1. $_POST['captcha'] == $number
, bo $number jest pusta (zrób sobie var_dump($number) i sprawdź).
Rozwiązanie? Zapamiętuj zmienną w sesji.
mcfreak
dzięki, działa :]
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.