anlamadığım şey kodu resme yazdırmadığın için almak istediğin güvenlik önmeli suistimal edilebilinir.
<?php
create_image();
exit();
function create_image()
{
$md5 = md5(rand(0,999));
$pass = substr($md5, 10, 5);
$width = 100;
$height = 20;
$image = ImageCreate($width, $height);
$white = ImageColorAllocate($image, 255, 255, 255);
$black = ImageColorAllocate($image, 0, 0, 0);
$grey = ImageColorAllocate($image, 204, 204, 204);
ImageFill($image, 0, 0, $black);
ImageString($image, 3, 30, 3, $pass, $white);
ImageRectangle($image,0,0,$width-1,$height-1,$grey);
imageline($image, 0, $height/2, $width, $height/2, $grey);
imageline($image, $width/2, 0, $width/2, $height, $grey);
header("Content-Type: image/jpeg");
ImageJpeg($image);
ImageDestroy($image);
}
?>ayrıca session kullanıyorsa kodun başlangıcına
session_start(); eklemeyi unutma.
karışık geldi anlamadım diyorsan şunu kullan.
___________________________
index.php
<?php
session_start();
$resim_kodu="";
function rasgele() {
$gecici_deger = mt_rand(1,3);
switch ($gecici_deger) {
case 1:
$gecici_deger = mt_rand(97, 122);
break;
case 2:
$gecici_deger = mt_rand(48, 57);
break;
case 3:
$gecici_deger = mt_rand(65, 90);
break;
}
return chr($gecici_deger);
}
for ($i = 1; $i <= 4; $i++) {
$resim_kodu.= rasgele();
}
$_SESSION['guvenlik_kodu'] = $resim_kodu;
echo '<html><head><title>Güvenlik kodu uygulaması</title></head><body><br>
<form action="kontrol.php" method="POST" name="guvenlik" target="_self">
<table width="500" border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td>
<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Lütfen resimde
gördüğünüz kodu, resmin yanındaki kutucuğa giriniz. Eğer kodu tam okuyamıyorsanız F5
tuşuna basarak yeni kodu görebilirsiniz.</font></p>
<p align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="resim.php?';
echo session_id();
echo '"></font></p>
<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Kodu girin: </font>
<input name="kod" type="text" id="kod" size="30">
<input type="submit" name="Submit" value="OK">
</p>
<p align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<b>Not:</b>Güvenlik kodu büyük küçük harf duyarlıdır!
</p>
</td></tr>
</table></form></body></html>';
?"gt;
resim.php
<?php
session_start();
$guvenlik_kodu= $_SESSION['guvenlik_kodu'];
$resim=imagecreate(100,40);
$resim_siyah = imagecolorallocate($resim,0,0,0);
$resim_beyaz = imagecolorallocate($resim,255,255,255);
imagefill($resim,0,0,$resim_siyah);
imagechar($resim,4,20,13,$guvenlik_kodu[0],$resim_beyaz);
imagechar($resim,5,40,13,$guvenlik_kodu[1],$resim_beyaz);
imagechar($resim,3,60,13,$guvenlik_kodu[2],$resim_beyaz);
imagechar($resim,4,80,13,$guvenlik_kodu[3],$resim_beyaz);
header('Content-type: image/png');
imagepng($resim);
?>kontrol.php
<?php
session_start();
$girilen_kod = $_POST['kod'];
$guvenlik_kodu=$_SESSION['guvenlik_kodu'];
if ($girilen_kod == $guvenlik_kodu) {
echo 'çok beceriklisiniz. doğru kodu girdiniz.';
}
else {
echo 'güvenlik kodu hatalı';
}
session_unset();
session_destroy();
?>
GD kütüphanesiin unutma