Autor Zpráva
deliQus
Profil
Zdravím, používám tento skript na vykreslení obrázku s kódem
<?

ob_start();

$font = 'fonts/arial.ttf';

$charset = '0123456789';

$code_length = 4;

$height = 20;

$width = 60;


$code = '';
for($i=0; $i < $code_length; $i++) {
$code = $code . substr($charset, mt_rand(0, strlen($charset) - 1), 1);
}

$font_size = $height * 0.7;
$image = @imagecreate($width, $height);
$background_color = @imagecolorallocate($image, 255, 255, 255);
$noise_color = @imagecolorallocate($image, 114, 114, 114);

for($i=0; $i < ($width * $height) / 4; $i++) {
@imageellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}

$text_color = @imagecolorallocate($image, 20, 40, 100);
@imagettftext($image, $font_size, 0, 7,17,
$text_color, $font , $code)
or die('Cannot render TTF text.');

header('Content-Type: image/png');
@imagepng($image) or die('imagepng error!');
@imagedestroy($image);

$_SESSION['AntiSpamImage'] = $code;
exit();

?>


mám ho uloženy jako antispam.php

a v jinem souboru mam formular a tam vykresluji obrazek pomoci :

<img src="antispam.php" alt="ochrana" />


Ale nemůžu potom ověřovat správnost kódu, když to není v tom stejném souboru, a když ten skript dám do stejného souboru jako formulář, tak nejde nic. Nevíte jak mám kontrolovat správnost toho kódu, když je uložený v jiném souboru ?
Alphard
Profil
Session by mělo fungovat, jen tam chybí session_start(). Další možnost by byla generovat daný řetězec u formuláře a na vykreslení ho (šifrovaně) předat jako GET.
<img src="antispam.php?k=uj9Tm" alt="ochrana" />
<input type="hidden" name="captcha" value="uj9Tm">

Tohle je dost průhledné, berte to jako demonstraci.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: