[ BLACK_SWORD @ 14.04.2010. 11:44 ] @
Pozdrav,

napravio sam captachu

Code:
<?php

session_start();

$char='abcdefghijlkmnoprstuvzqyxABCDEFGHIJLKMNOPRSTUVZQYX123456789';
$size=strlen($char)-1;
for($i=0;$i<7;$i++)
    $string.=$char[rand(0,$size)];
$_SESSION['string']=$string;

$image=imagecreate(200,50);
$forground=imagecolorallocate($image,255,255,255);
$background=imagecolorallocate($image,48,77,184);
imagettftext($image,25,0,12,35,$background,'Walshes.ttf',$string);
header('Content-type:image/png');
imagepng($image);

?>


e sad me zanima kako da u formi napravim da kad korisnik ne unese ispravne znakove sa sličice da mu ispiše grešku "Niste upisali ispravne znakove sa sličice! ".

skripta znakove sprema u session al ja bi da to ne radim preko session jer djeluje mi nekako nesigurno

Code:
<form method="post" action="">
<table width="100%" cellpadding="5" cellspacing="0" border="0">
    <tr>
        <td class="srednjitext"><b>Vizualna provjera:</b></td>
    </tr>
    <tr>
        <td class="malitext">Unesite znakove koji su prikazani na slici.</td>
    </tr>
    <tr>
        <td><img src="captcha.php" alt="" /></td>
    </tr>
    <tr>
        <td><input size="20" type="text" name="anti_spam" /></td>
    </tr>


    <tr>
        <td><input type="submit" class="but" name="registruj" value="Registruj se!" /></td>
    </tr>
</table>
</form>
[ Nikola Poša @ 14.04.2010. 12:06 ] @
Većina implementaija captcha-e koristi sesiju za skladištenje tih znakova sa slike, pa ne vidim zašto bi ti sad izmišljao nešto novo... Zašto bi nekome bilo u interesu da pokuša da hack-uje tu captcha proveru, kako bi je eto zaobišao? Time se tek potvrđuje da se radi o korisniku, a ne o nekom spam bot-u. A druga stvar, ne verujem da postoje toliko sofisticirani bot-ovi, koji su opremljeni nekim algoritmom za hack-ovanje sesije. Tako da, bolje gledaj da unaprediš (zakomplikuješ) sam ispis captcha slike, jer to je u stvari najvažnija stvar, pošto ti bot-ovi uglavnom rade na principu analiziranja piksela sa slike, u cilju očitavanja kodne poruke.
[ BLACK_SWORD @ 14.04.2010. 12:22 ] @
ok onda cu ostaviti u session,

a kako sad da napravim funkciju ako korisnik ne unese ispravne znakove sa sličice da mu ispiše grešku?
[ Nikola Poša @ 14.04.2010. 12:56 ] @
Pa nema tu sad funkcije, u onom delu gde radiš validaciju, za taj element forme koji predstavlja captcha-u samo ispitaš:
Code:
if ($_POST['anti_spam'] == $_SESSION['anti_spam']) {
   //ispravna captcha validacija
}

Naravno, nazivi tog tekstualnog polja i sesije treba da budu oni koje si i stavio u svom kodu...
[ Goran Rakić @ 14.04.2010. 13:56 ] @
BLACK_SWORD, moj iskren savet je da batališ te copy-paste vodiče koje čitaš i iz kojih izvlačiš blokove koda i ozbiljnije pročitaš neku knjigu o programiranju.