Webmaster общности: Predpriemach.com | SearchEngines.bg

    PHP Код против ботове

    Автор: human

    Знам че има такъв урок , но е направен по др начин, а и на мен нещо не ми тръгва.
    Ето започваме.

    За урока ще ни трябва една картинка
    bg.png:

    ,която ще ползваме за background на кода.
    После ни трябва , файлът който генерира кода:
    img.php

    <?php
    $dyl="5"; //дължина на кода
    function randStr($length) {
    $key = "";
    $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
    for($i=0;$i<$length;$i++) {
    $key .= $pattern{rand(0,35)};
    }
    return $key;
    } //взимаме произволен текст
    
    //графична проверка за код
    header("Content-type: image/png");
    $bg = "bg.png"; //картинката за BG
    $im = @ImageCreateFrompng($bg);
    
    $text = randStr($dyl); //взимаме произволния текст
    setcookie("imgcodepage",$text,time()+3600,"/"); //правим бисквитки с този текст
    
    $text_color = imagecolorallocate($im, 0, 0, 0);//цвета на текста
    
    imagestring($im, 50, 1, 1,$text, $text_color); //генерираме картинката
    imagepng($im);
    imagedestroy($im);
    
    ?>

    И така.С този код се генерира картинка и за да проверим кода дали е верен задаваме бисквитки с кода.
    Следващият файл е файлът за проверка, примерно test.php:

    <?PHP
    if (!$_POST['test']) {
    ?>
    <table>
    <form method="POST">
    <tr><td>Текста*:</td><td><input type="text" name="text"></td></tr>
    <tr><td>Код*:</td><td><input type="text" name="kod"></td><td><img src="img.php"></td></tr>
    <tr><td><input name="test" type="submit" value="Тествай"> </td></tr>
    </form>
    </table>
    <?php
    }else{
    $kod = htmlspecialchars($_POST[kod]);//взимаме текста
    $text= htmlspecialchars($_POST[text]);//от полетата
    if($kod!=$_COOKIE[imgcodepage]){echo"Не сте въвели правилно кода!";}else{ //проверка за кода
    if($text==NULL|$kod=NULL) { //проверка дали всички полета са попълнени
    echo"Моля попълнете всичките полета!";} else {
    echo "Успешно, кода работи :P";
    }
    }
    }
    ?>

    Оставете коментар