编程爱好者联盟 2016-09-13
<span ;style="font-size: ;18px; ;background-color: ;#ffffff;">说明:一些基本的代码我都进行了注释,这里实现的验证码位数、需要用的字符串都可以再设置。有我的注释,大家应该很容易能看得懂。</span>
<span ;style="font-size: ;18px; ;background-color: ;#ffffff;">基本思路:</span>
<span ;style="font-size: ;18px; ;background-color: ;#ffffff;"> ; ; 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符串进行拼接(觉得生成的验证码觉得有点太挤,大家可以再字符串中间拼接个空格键),实现随机验证码;</span>
<span ;style="font-size: ;18px; ;background-color: ;#ffffff;"> ; ; 备注:建议大家用mt_rand(),而不是rand(),前者效率更高</span>
<span ;style="font-size: ;18px; ;background-color: ;#ffffff;"> ; ; 2.利用gd库生成图片,把随机字符串写到图片输出。</span>
<span ;style="font-size: ;18px; ;background-color: ;#ffffff;">效果:</span>
<span ;style="font-size: ;18px; ;background-color: ;#ffffff;">每次刷新,都生成一个随机验证,后期我可能还会补充怎么实现随机码点击图片就再次更新</span>
<span ;style="font-size: ;18px;"> </span>
<span ;style="font-size: ;18px; ;background-color: ;#ffffff;">代码:</span>
; ; ; ;<pre><?php
// ;创建画布
$width ;= ;120; ; ; ;// ;规定画布的宽高
$height ;= ;45;
$image ;= ;imagecreatetruecolor($width, ;$height); ; ;// ;创建一幅真彩色图像
// ;添加一些即将用到的颜色
$white ;= ;imagecolorallocate($image, ;0xf2, ;0xec, ;0xe0);
$orange ;= ;imagecolorallocate($image, ;0xff, ;0xa5, ;0x4c);
// ;对画布背景填充颜色
imagefill($image, ;0, ;0, ;$white);
//mt_rand ; ;获取随机数 ;mt_rand(min, ;max);
; ; ; ;function ; ;str_rand(){
; ; ; ; ; ; ; ;$str="abcdefghijkmnpqrstuvwxyz0123456789ABCDEFGHIGKLMNPQRSTUVWXYZ";
; ; ; ; ; ; ; ;$rand="";
; ; ; ; ; ; ; ;for($i=0; ;$i<5; ;$i++){//获取5个随机的字符串
; ; ; ; ; ; ; ; ; ; ; ;$rand ;.= ;$str[mt_rand(0, ;strlen($str)-1)]; ; ;//如:随机数为30 ; ;则:$str[30]
; ; ; ; ; ; ; ;}
; ; ; ; ; ; ; ;return ;$rand;
; ; ; ;}
$verifyCode=str_rand();
// ;画一串字符串在画布上
imagestring($image, ;10, ;10, ;10, ;"$verifyCode", ;$orange);
// ;通知浏览器输出的是图像(png类型)
header('Content-Type: ;image/png');
// ;输出到浏览器
imagepng($image);
// ;释放图像资源</pre> ; ;