Home >Backend Development >PHP Problem >How to implement digital verification code in php
##The operating environment of this article: windows7 system, PHP7.1 version, DELL G3 computerphp 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.
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 imageGoal: Generate a 100*30px picture through php code
Method :
(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:
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 imageline(resource $image,int $x1,int $y1,int $x2,int $y2,int $ color)
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=''; //画出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='abcdefghijklmnopqrstuvwxyz123456789';//由于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['authcode']=$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('content-type:image/png'); imagepng($image); imagedestroy($image);form.php
<?php if(isset($_REQUEST['authcode'])){ session_start(); if(strtolower($_REQUEST['authcode'])==$_SESSION['authcode']){ echo '<font color="#0000cc">输入正确</font>'; }else{ echo '<font color="#cc0000><b>输入错误</b></font>'; } exit(); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>确认验证码</title> </head> <body> <form method="post" action='./form.php'> <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('code_img').src='./validate.php?r='+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!