PHP implementation generates mixed verification code and image verification code and tests (code)

不言
Release: 2023-04-03 20:42:01
Original
1864 people have browsed it

The content this article brings to you is about the PHP implementation of generating mixed verification codes and image verification codes and testing (code). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you. .

Generate a mixed verification code and encapsulate it into a function. File name: buildVerifyCode.func.php

	//range('a','z')将括号中的内容作为键值生成一个索引数组
	//array_merge($array1,$array2)合并两个数组中的键值,生成新索引数组
	//array_flip()将括号中的内容,键名与键值对换
	//array_rand($array,$length)随机取出$array中$length长度的键名作为新数组的键值,生成一个索引数组
	//join('',$array)以空连接数组中的值,以数组的内容生成字符串
Copy after login
<?php
function buildVerifyCode($type=2,$length=4){
switch ($type) {
	case 0:
	$string=join(&#39;&#39;,array_rand(range(0,9),$length));
	break;
	case 1:
	$string=join(&#39;&#39;,array_rand(array_flip(array_merge(range(&#39;a&#39;,&#39;z&#39;),range(&#39;A&#39;,&#39;Z&#39;))),$length));
	break;
	case 2:
	$string=join(&#39;&#39;,array_rand(array_flip(array_merge(range(&#39;a&#39;,&#39;z&#39;),range(&#39;A&#39;,&#39;Z&#39;),range(0,9))),$length));
	break;
}
return $string;
}
Copy after login

Test whether the generated verification code is correct. File name: getCode.php

<?php
require &#39;buildVerifyCode.func.php&#39;;
echo buildVerifyCode();
// 	$fontfiles=[&#39;msyh.ttc&#39;,&#39;msyhbd.ttc&#39;,&#39;msyhl.ttc&#39;,&#39;simsun.ttc&#39;,&#39;Sitka.ttc&#39;];
// 	$fontfile=$fontfiles[mt_rand(0,count($fontfiles)-1)];
// var_dump($fontfile);
Copy after login

Generate image verification code, write specific comments when you have time, file name: getVerifyCodeImg.func.php

<?php
$width=100;
$height=30;
//创建画布,默认底色黑色,rgb0,0,0
$image=imagecreatetruecolor($width,$height);
//创建白色,方便覆盖画布
$white=imagecolorallocate($image,255,255,255);
//创建白色矩形覆盖原始画布
imagefilledrectangle($image,1,1,$width-2,$height-2,$white);
require &#39;buildVerifyCode.func.php&#39;;
$type=2;
$length=4;
$verifyCode=buildVerifyCode($type,$length);
for($i=0;$i<$length;$i++){
	$color=imagecolorallocate($image,mt_rand(50,90),mt_rand(80,200),mt_rand(90,150));
	$size=mt_rand(14,16);
	$angle=mt_rand(-15,15);
	$x=($i*100/5)+$size;
	$y=mt_rand(20,25);
	$fontfiles=[&#39;msyh.ttc&#39;,&#39;msyhbd.ttc&#39;,&#39;msyhl.ttc&#39;,&#39;simsun.ttc&#39;,&#39;Sitka.ttc&#39;];
	$fontfile="../fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];
	$text=substr($verifyCode,$i,1);
	imagettftext($image,$size,$angle,$x,$y,$color,$fontfile,$text);
}
$pixel=120;
if($pixel){
	$pixelcolor=imagecolorallocate($image,mt_rand(150,170),mt_rand(100,140),mt_rand(90,160));
	for($i=0;$i<$pixel;$i++){
		imagesetpixel($image,mt_rand(0,$width-1),mt_rand(0,$height-1),$pixelcolor);
	}
}
$line=4;
if($line){
	for($i=0;$i<$line;$i++){
		imageline($image,mt_rand(0,$width-1),mt_rand(0,$height-1),mt_rand(0,$width-1),mt_rand(0,$height-1),$pixelcolor);
	}
}

header(&#39;content-type:image/png&#39;);
imagepng($image);
imagedestroy($image);
Copy after login

Related recommendations:

tp5 framework ajax asynchronously adds data Code implementation

########

The above is the detailed content of PHP implementation generates mixed verification code and image verification code and tests (code). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template