generuję dynamiczny obrazek <img src="captcha.php" alt="" />
w pliku captcha.php przypisuję ciąg znaków do zmiennej sesyjnej $_SESSION['token']
niestety po przesłaniu formularza i próbie porównania $_SESSION['token'] z $_POST['captcha'] okazuje się, że $_SESSION['token']='';
W związku z czym otrzymuję błąd mimo tego, że kod jest podany poprawnie.
poniżej załączam listingi:
captcha.php
<? $znaki = '23456789'; $znaki2 = 'ACEHKMUXZ'; $cap = imagecreatefromjpeg($obrazek_tla); $kolor = imagecolorallocate($cap, 100, 100, 100); $linie = imagecolorallocate($cap, 150, 150, 150); $liczba_znakow = 5; // ilość znaków na obrazku $ilosc_linii = 30; // ilość linii na obrazku for($x = 1; $x <= $ilosc_linii; $x++) // powtarzamy x razy - rysujemy x linii imageline ( // funkcja rysująca linię $cap, // uchwyt obrazka 0, // współrzędna X początku linii imagesx($cap), // współrzędna X końca linii $linie // kolor linii ); $code=''; // tworzenie zmiennej przechowującej ciąg znaków for($x = 1; $x <= $liczba_znakow; $x++) { if ($x==1) { } else { } $code .= $znak; // dodanie kolejnoego znaku do zmiennej $code imagettftext ( // funkcja pisząca tekst $cap, // uchwyt obrazka $odleglosc_miedzy_znakami, // odległość między znakami $kolor, $czcionka, $znak ); } $_SESSION['token']=''; // tworzenie zmiennej sesyjnej przechowującej token $_SESSION['token']=$code; imagejpeg($cap); imagedestroy($cap); ?>
sendform.php
$error=0; if (!$_POST['captcha']) { $error++; $smarty->assign("ErrorCaptcha","Podaj poprawny kod z obrazka".$_SESSION['token']." <- token<br />".$_POST['captcha']." <- captcha"); } else { { $error++; $smarty->assign("ErrorCaptcha","Podaj poprawny kod z obrazka".$_SESSION['token']." <- token<br />".$_POST['captcha']." <- captcha"); } } if ($error==0) else
będę bardzo wdzięczny za każdą radę, bo siedzę już nad tym drugi dzień i nic...
PROBLEM ROZWIĄZANY: brakowało session_start(); w głównym pliku index.php

można temat wywalić