Home >Backend Development >PHP Tutorial >Examples and ideas analysis of php verification code

Examples and ideas analysis of php verification code

*文
*文Original
2017-12-28 15:41:161628browse

This article mainly introduces the production ideas and implementation methods of PHP verification codes. We cannot blindly implement PHP to generate verification codes. We should understand the basic principles of PHP verification codes and truly master the implementation methods of PHP verification codes. What is needed Friends can refer to it. I hope to be helpful.

1. Production Ideas

Since registration codes are often used when registering to prevent malicious registration of machines, here I publish a basic image that generates a png image verification code , simple idea analysis:

1. Generate a png picture
2. Set the background color for the picture
3. Set the font color and style
4. Generate 4 Random verification code with a number of digits
5. Adjust the rotation angle and position of each generated character and draw it on the png image
6. Add noise and interference lines to prevent registration machines from analyzing the original image for malicious registration
7. Output the picture
8. Release the memory occupied by the picture

2. Implementation method

authcode.php file


<?php
    session_start ();
    header ( &#39;Content-type: image/png&#39; );
    //创建图片
    $im = imagecreate($x=130,$y=45 );
    $bg = imagecolorallocate($im,rand(50,200),rand(0,155),rand(0,155)); //第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色
    $fontColor = imageColorAllocate ( $im, 255, 255, 255 );  //字体颜色
    $fontstyle = &#39;rock.ttf&#39;;          //字体样式,这个可以从c:\windows\Fonts\文件夹下找到,我把它放到和authcode.php文件同一个目录,这里可以替换其他的字体样式
    //产生随机字符
    for($i = 0; $i < 4; $i ++) {
        $randAsciiNumArray     = array (rand(48,57),rand(65,90));
        $randAsciiNum         = $randAsciiNumArray [rand ( 0, 1 )];
        $randStr             = chr ( $randAsciiNum );
        imagettftext($im,30,rand(0,20)-rand(0,25),5+$i*30,rand(30,35),$fontColor,$fontstyle,$randStr);
        $authcode            .= $randStr; 
    }
    $_SESSION[&#39;authcode&#39;]    = $randFourStr;//用户和用户输入的验证码做比较
    //干扰线
    for ($i=0;$i<8;$i++){
        $lineColor    = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
        imageline ($im,rand(0,$x),0,rand(0,$x),$y,$lineColor);
    }
    //干扰点
    for ($i=0;$i<250;$i++){
        imagesetpixel($im,rand(0,$x),rand(0,$y),$fontColor);
    }
    imagepng($im);
    imagedestroy($im);        
?>


Rendering:

Related recommendations :

How to use php to send SMS verification codes

Laravel’s verification code library

How to solve the problem that the verification code image does not appear in ecshop

The above is the detailed content of Examples and ideas analysis of php verification code. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn