Home  >  Article  >  Backend Development  >  How to implement digital verification code in php

How to implement digital verification code in php

藏色散人
藏色散人Original
2021-10-18 09:30:012606browse

php method to implement digital verification code: 1. Implement the verification code base image through the imagecreatetruecolor function; 2. Implement the digital verification code through the imagecolorallocate method; 3. Add interference elements; 4. Store the verification information.

How to implement digital verification code in php

##The operating environment of this article: windows7 system, PHP7.1 version, DELL G3 computer

phpHow to implement digital verification code?

php implements digital verification code

Use PHP to implement verification code. The verification code is to distinguish between machine and human operations and improve security. Server software needs to be installed. I am using wamp, and then write a php verification code page.

It is divided into the following steps to achieve:

1. Implement the verification code base image

Goal: Generate a 100*30px picture through php code
Method :

resource imagecreatetruecolor(int $width,int $height)

Note:

(a) Depends on GD extension
(b) Before outputting the image, the image must be output in advance header information
(c) The default output of this method is black background
//
2. Implement digital verification code
Method:

int imagecolorallocate(resource $image,int $red ,int $green,int $blue);

bool imagestring(resource $image,int $font,int $x,int $y,string $s,int $col);
Note:/Control well Font size and distribution to avoid font overlap or incomplete display
//
3. Add interfering elements
Objective: Add interfering elements, interfering points or lines to the verification code
Method:

bool imagesetpixel(resource $image,int $x,int $y,int $color);

bool imageline(resource $image,int $x1,int $y1,int $x2,int $y2,int $ color)

Note: The color of interference information must be controlled well to avoid "obsessing over others";

4. Store verification information through SESSION

Objective: Record verification code information on the server side for convenience Verification after user input
Method: bool session_start(void)
Notes: (a) session_start() must be at the top of the script
(b) In the case of multiple servers, centralized management of session information needs to be considered

5. Submit and verify the verification code through the form
Goal: Provide the generated verification code to the user, and verify the correctness of the user verification code
Method: htmlff9c23ada1bcecdd1a0fb5d5a0f18437 form basics
validate.php

<?php
session_start();
$image=imagecreatetruecolor(100,30);
$bgcolor=imagecolorallocate($image,255,255,255); //#fff
imagefill($image, 0, 0, $bgcolor);
$captch_code=&#39;&#39;;
//画出4个随机的数字或者字母
for($i=0;$i<4;$i++){
$fontsize=6;
//为了让数字的颜色不同,使用随机颜色rand(0,120),120之前是深色
$fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
$data=&#39;abcdefghijklmnopqrstuvwxyz123456789&#39;;//由于o和0对于一些人不太好区别,所以把0去掉了
$fontcontent=substr($data,rand(0,strlen($data)),1);
$captch_code.=$fontcontent;
$x=($i*100/4)+rand(5,10);
$y=rand(5,10);
//水平画一条字符串
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
$_SESSION[&#39;authcode&#39;]=$captch_code;
//增加点干扰元素
for($i=0;$i<200;$i++){
$pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));
//画一个单一像素
imagesetpixel($image,rand(1,99),rand(1,99),$pointcolor);
}
//增加线干扰元素
for($i=0;$i<3;$i++){
$linecolor=imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220));
imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
}
header(&#39;content-type:image/png&#39;);
imagepng($image);
imagedestroy($image);

form.php

<?php
if(isset($_REQUEST[&#39;authcode&#39;])){
session_start();
if(strtolower($_REQUEST[&#39;authcode&#39;])==$_SESSION[&#39;authcode&#39;]){
echo &#39;<font color="#0000cc">输入正确</font>&#39;;
}else{
echo &#39;<font color="#cc0000><b>输入错误</b></font>&#39;;
}
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>确认验证码</title>
</head>
<body>
    <form method="post" action=&#39;./form.php&#39;>
        <div>验证码图片:
        <img id="code_img" border="1" src="./validate.php?r=<?php echo rand();?>" width="100" alt="">
        <a href="javascript:void(0)" οnclick="document.getElementById(&#39;code_img&#39;).src=&#39;./validate.php?r=&#39;+Math.random()">换一个?</a>
        </div>
        <div>请输入图片中的内容:<input type="text" name="authcode" value=""></div>
        <div><input type="submit" value="提交" style="padding:6px 20px;"></div>
    </form>
</body>
</html>

Recommended study: "

PHP Video Tutorial"

The above is the detailed content of How to implement digital verification code in php. 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