Home  >  Article  >  Backend Development  >  PHP generates verification codes with specified digits and controllable interference elements

PHP generates verification codes with specified digits and controllable interference elements

不言
不言Original
2018-04-20 14:57:231701browse

The content of this article is about PHP generating specified digit verification code and controllable interference elements. It has certain reference value. Now I share it with you. Friends in need can refer to it.

Generate Mix Verification code and encapsulated 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)以空连接数组中的值,以数组的内容生成字符串
<?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;
}


# 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);

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);

Related recommendations:

php generate word file

PHP generates speech

The above is the detailed content of PHP generates verification codes with specified digits and controllable interference elements. 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