mam problem z sesjami i captchą, rozwiązanie które prezentuje na dole strony działało kiedyś teraz przestało. Nie wiem czy coś zmieniłem, czy to mój błąd, czy coś się posypało, dlatego proszę Was o pomoc.
Klasa odpowiedzialna za malowanie captcha:
<?php class Captcha{ private $code; private $length; private $width; private $height; public function __construct($length,$width,$height){ $this->length = $length; $this->width = $width; $this->height = $height; } private function random_string($length){ $string = ''; for($i=0;$i<$length;$i++){ } return($string); } public function generateCode(){ $this->code = $this->random_string($this->length); $_SESSION['ccode'] = $this->code; } public function showCaptcha(){ $im = imagecreatetruecolor($this->width, $this->height); $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, $this->width, $this->height, $white); $font = '../_RES/fonts/actionj.ttf'; imagettftext($im, 20, 5, 11, 30, $grey, $font, $this->code); imagettftext($im, 20, 5, 10, 31, $black, $font, $this->code); imagegif($im); imagedestroy($im); } } ?>
Tutaj mały PHP który jest mi pomocny przy wyświetlaniu captcha - get_code.php:
<?php require_once '../class/validators/captcha.php'; $captcha = new Captcha(5,100,30); $captcha->generateCode(); $captcha->showCaptcha(); ?>
Oraz plik testowy:
<?php ?> <img src="helpers/get_code.php" alt="scode"> <?php ?>
Efekt jaki chciałem uzyskać to standardowy, czyli generuję sobie captcha a po odświeżeniu strony zmienna $_SESSION["ccode"], powinna mieć wartość taką jaką widziałem na captchy. Błąd pewnie jest błahy, gdzie go popełniłem ? Oraz dlaczego jak w metodzie generateCode umieszczę licznik (na sesjach) to będzie on skakał co 2 ? Czy teraz 2 razy się ta metoda wywołuje raz do generowania a raz do wyświetlania ? Kompletnie już zgłupiałem.