验证码
Posted 初代源码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证码相关的知识,希望对你有一定的参考价值。
1 <?php 2 // 创建画布 3 $img = imagecreatetruecolor(170, 40); 4 5 // 创建背景颜色 6 $backcolor = imagecolorallocate($img,mt_rand(200,255), mt_rand(200,255), mt_rand(200,255)); 7 // 填充背景 8 imagefill($img, 0, 0, $backcolor); 9 10 // 定义数组 11 $arr = array_merge(range(‘a‘,‘z‘), range(‘A‘,‘Z‘), range(0, 9)); 12 13 // 打乱数组 14 shuffle($arr); 15 16 // 随机抽取数组的下标值 17 $rand_keys = array_rand($arr,4); 18 19 // 遍历获得原数组的值 20 $str = ‘‘; 21 foreach($rand_keys as $value){ 22 $str .= $arr[$value]; 23 } 24 25 // 将验证码字符写到图片上 26 // 计算字符间距 27 $span = ceil(170/(4+1)); 28 29 // 将验证码字符写在图片上 30 for($i=1;$i<=4;$i++){ 31 $stringColor = imagecolorallocate($img, mt_rand(0,150), mt_rand(0,150), mt_rand(0,150)); 32 // 绘制文字 33 imagestring($img, 5, $i*$span, 10, $str[$i-1], $stringColor); 34 } 35 36 // 添加干扰线 37 for($i=1;$i<=9;$i++){ 38 $lineColor = imagecolorallocate($img, mt_rand(100,200), mt_rand(100,200),mt_rand(100,200)); 39 imageline($img,mt_rand(0,169),mt_rand(0,39),mt_rand(0,169),mt_rand(0,39),$lineColor); 40 } 41 42 // 添加干扰点 43 for($i=1;$i<=170*40*0.05;$i++){ 44 $pixelColor = imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); 45 imagesetpixel($img, mt_rand(0,169), mt_rand(0,39), $pixelColor); 46 } 47 48 // 输出图片 49 header("content-type:image/png"); 50 51 // 清理数据缓冲区 52 imagepng($img); 53 54 // 保存图片 55 imagepng($img,‘./hello.png‘);
以上是关于验证码的主要内容,如果未能解决你的问题,请参考以下文章
Android SMS Verification API 结果码始终为 0
爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别