php的验证码(含数字和字母)
四位的。随即产生数字或字母,颜色随机产生。位置可变session_start();
header("Content-type: image/png");
$im = @imagecreatetruecolor(100, 50);//设置画布的大小
$background_color = imagecolorallocate($im, 200, 200, 200);
imagefill($im, 0, 0, $background_color);//填充画布的背景色
$rand="";
$str="";
for($i=0;$i<4;$i++){
$num = rand(0,15);//产生1-15的随机数
if($num>=10){ //如果大于10的话 就转换成16进制,也就是字母的形式
$num = dechex($num);
}
$rand.=$num."|";
}
$arry = str_split($rand);
$num1 = $arry;
$num2 = $arry;
$num3 = $arry;
$num4 = $arry;
$str = $num1.$num2.$num3.$num4;//把分别产生的数字或者字母拼接成字符串.最后要把这个字符串存入session
$x1 = rand(70,90);//随即产生的数字代表验证码上的数字(字母)的x坐标。固定某个范围,以免重叠
$x2=rand(50,60);
$x3=rand(30,40);
$x4 = rand(10,20);
imagettftext($im, 20, 0,$x1, rand(30,35), imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)),"arial.ttf", $num4);
imagettftext($im, 20, 0,$x2, rand(30,35), imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)),"arial.ttf", $num3);
imagettftext($im, 20, 0,$x3, rand(30,35), imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)),"arial.ttf", $num2);
imagettftext($im, 20, 0,$x4, rand(30,35), imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)),"arial.ttf", $num1);
//imagestring($im, 5, $x1, rand()%30, $num4, imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)));
//imagestring($im, 5, $x2, rand()%30, $num3, imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)));
//imagestring($im, 5, $x3, rand()%30, $num2, imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)));
//imagestring($im, 5, $x4, rand()%30, $num1, imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)));imagestring也可以用 但是这个不能改变字体的大小
for($i=0;$i<200;$i++) //加入干扰象素
{
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%100 , rand()%50 , $randcolor);
}
$_SESSION["str"] = $str;
imagepng($im);
imagedestroy($im);
页:
[1]