Breaking

Hướng dẫn tạo Captcha hình ảnh bằng PHP

Lý do để tớ viết hướng dẫn này là để chứng minh làm thế nào để tạo hình ảnh captcha trong ứng dụng của bạn bằng cách sử dụng PHP. CAPTCHA là một kiểm tra đơn giản để xác định xem người dùng là máy tính hay con người. Nó được sử dụng để ngăn chặn lạm dụng spam trên các trang web. Vì vậy, nếu bạn sử dụng CAPTCHA trên trang web của bạn, điều này có thể giúp ngăn chặn một số chương trình độc hại.


1. Tạo ảnh Captcha



Bạn phải cài đặt thư viện  một GD (Graphics Draw) trước khi tiếp tục với bài viết này. Thư viện này cho phép vẽ đồ họa và hình ảnh thông qua chức năng PHP.

Điều đầu tiên bạn cần tạo hình ảnh captcha. Captcha của bạn phải là một chuỗi ngẫu nhiên nhé!

 
    <!-- captcha.php -->

<?php
session_start();
?>

    <title>Generate captcha image</title>
    <body style="background-color:#ccc;">

<?php
    create_image();
    display();
    function display()
    {
?>
       <div style="text-align:center;">
            <h3>TYPE THE TEXT YOU SEE IN THE IMAGE</h3>
            <div style="display:block;margin-bottom:20px;margin-top:20px;">
                <img src="captcha_image.png">
            </div>
            <form action=" <?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
                <input type="submit" value="refresh captcha">
            </form>
            <form action=" <?php echo $_SERVER['PHP_SELF']; ?>" method="POST"/ >
                <input type="text" name="input"/>
                <input type="hidden" name="flag" value="1"/>
                <input type="submit" value="submit" name="submit"/>
            </form>
            
        </div>      


<?php
    }

    function  create_image()
    {
        $image = imagecreatetruecolor(200, 50);       
        $background_color = imagecolorallocate($image, 255, 255, 255);  
        imagefilledrectangle($image,0,0,200,50,$background_color); 

        $line_color = imagecolorallocate($image, 64,64,64);
        $number_of_lines=rand(3,7);

        for($i=0;$i<$number_of_lines;$i++)
        {
            imageline($image,0,rand()%50,250,rand()%50,$line_color);
        }

        $pixel = imagecolorallocate($image, 0,0,255);
        for($i=0;$i<500;$i++)
        {
            imagesetpixel($image,rand()%200,rand()%50,$pixel);
        }  

        $allowed_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
        $length = strlen($allowed_letters);
        $letter = $allowed_letters[rand(0, $length-1)];
        $word='';
        $text_color = imagecolorallocate($image, 0,0,0);
        $cap_length=6;// No. of character in image
        for ($i = 0; $i< $cap_length;$i++)
        {
            $letter = $allowed_letters[rand(0, $length-1)];
            imagestring($image, 5,  5+($i*30), 20, $letter, $text_color);
            $word.=$letter;
        }

        $_SESSION['captcha_string'] = $word;

        imagepng($image, "captcha_image.png");
    }
?>
    </body>

2. Xác nhận hình ảnh Captcha


Đây là một thông báo của người dùng sau khi họ điền captcha

  
    if($_SESSION['captcha_string']==$_POST["input")
    {
        echo "Thank you. You can proceed";
    }
    else
    {
        echo "Sorry. Try again";
    }
    unset($_SESSION['captcha_string']);

Phần kết luận

Việc tạo các loại captchas khác nhau trong PHP rất dễ dàng. Bây giờ bạn có thể dễ dàng tạo ra một hình ảnh captcha để ngăn chặn spam trên trang web.

Powered by Blogger.