Resim ile güvenli kod uygulaması (Alıntı, kaynağı hatırlamıyorum.)
Formun gönderildiği sayfada;
$_SESSION['sec'] ile formdan giden (mesela $_POST['authcode'] ) değerlerinin eşitliğine bakarak, doğru ya da yanlış olduğu tespit edilir.
kullanımı:
Kod:
<img src='image.php' alt='' />
NOT:courier bold (courbd.ttf) fontu dosyayla aynı dizinde olursa pek bi güzel olur. İstenirse başka bir font da kullanılabilir.
PHP- Kodu:
<?php
//image.php
session_start();
$strlength = rand(4,7);
$captchastr = "";
for($i=1;$i<=$strlength;$i++)
{
$textornumber = rand(1,3);
if($textornumber == 1)
{
$captchastr .= chr(rand(49,57));
}
elseif($textornumber == 2)
{
$captchastr .= chr(rand(65,78));
}
elseif($textornumber == 3)
{
$captchastr .= chr(rand(80,90));
}
else{
$captchastr .= chr(rand(80,90));
}
}
$randcolR = rand(100,230);
$randcolG = rand(100,230);
$randcolB = rand(100,230);
//200,50 boyutlarında bir resim
$captcha = imageCreate(200,50);
$backcolor = imageColorAllocate($captcha, $randcolR, $randcolG, $randcolB);
$txtcolor = imageColorAllocate($captcha, ($randcolR - 80), ($randcolG - 80), ($randcolB - 80));
for($i=1;$i<=$strlength;$i++)
{
$clockorcounter = rand(1,2);
if ($clockorcounter == 1)
{
$rotangle = rand(0,45);
}
if ($clockorcounter == 2)
{
$rotangle = rand(315,360);
}
imagettftext($captcha,rand(14,20),$rotangle,($i*25),30,$txtcolor,"courbd.ttf",substr($captchastr,($i-1),1));
}
for($i=1; $i<=4;$i++)
{
imageellipse($captcha,rand(1,200),rand(1,50),rand(50,100),rand(12,25),$txtcolor);
}
for($i=1; $i<=4;$i++)
{
imageellipse($captcha,rand(1,200),rand(1,50),rand(50,100),rand(12,25),$backcolor);
}
//content type : png
header('Content-type: image/png');
imagePNG($captcha);
//Memory den sil
imageDestroy($captcha);
$_SESSION['sec'] = $captchastr;
?>