Home >Backend Development >PHP Tutorial >PHP verification code generation code_php skills

PHP verification code generation code_php skills

WBOY
WBOYOriginal
2016-05-16 20:04:541681browse

Verification codes are usually used to ensure that our website registration or login is not injected, but in order to be more secure, we usually generate some mixed verification codes. Let’s take a look at an example.

When we develop the login module or the forum irrigation module, in order to prevent malicious submissions, we need to use verification codes. Verification codes are a means of distinguishing people from machines. Of course, this method is not foolproof, but It will play some role after all.

The implementation of the verification code requires the support of the GD library. Children's shoes that do not have the GD library need to enable the GD library. In fact, the production and use of the verification code is very simple. It only requires 4 steps: Create a verification code base image , display the content of the verification code, add interference elements, and output the verification code. Let’s split the steps:

Step one: Create verification code base image

$image = imagecreatetruecolor(100, 30); // 创建一个宽为 100 高为 30 的底图 该底图的背景色 为黑色 是系统定义的 
$bgcolor = imagecolorallocate($image, 255, 255, 255);  // 为上面创建的底图分配 白色的背景颜色 
imagefill($image, 0, 0, $bgcolor); // 填充白色背景色 

Step 2: Display the verification code content

// 输出验证码内容 
for ($i=0; $i < 4; $i++) { 
  $fontsize = 6; 
  $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120)); 
  $data = 'qwertyuipkjhgfdsazxcvbnm23456789'; 
  $content = substr($data, rand(0, strlen($data)), 1); 
  $x = ($i*100/4) + rand(5,9);  
  $y = rand(5,10); 
  imagestring($image, $fontsize, $x, $y, $content, $fontcolor); //在图像上水平输出一行字符串 
} 

Step 3: Add disturbing elements

// 增加干扰点元素 
for ($i=0; $i < 300; $i++) { 
  $pointcolor = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200)); 
  imagesetpixel($image, rand(0,99), rand(0,29), $pointcolor); 
} //开源软件:phpfensi.com 
// 增加干扰线元素  线 和 点 的颜色一定要控制好 要比验证码数字的颜色浅 避免出现验证码数字看不见的现象 
for ($i=0; $i < 4; $i++) { 
  $linecolor = imagecolorallocate($image, rand(100,240), rand(100,240), rand(100,240)); 
  imageline($image, rand(0,99), rand(0,29), rand(0,99), rand(0,29), $linecolor); 
} 

Step 4: Enter the verification code

// 输出创建的图像  在输出图像之前 必须输出头信息 用来规定输出的图像类型 
header("Content-Type: image/png"); 
imagepng($image); 
// 销毁图像 
imagedestroy($image); 

At this point, a simple verification code has been implemented. Notes on implementing the verification code have been written in the comments. When using the verification code, we generally need to use a session to save it for verification, so we will not go into details here. introduce.

The above is the PHP verification code generation code. The important code has been commented. You can study the comment content carefully, it is also very important. I hope you can gain something

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