php如何创建验证码
2016-03-26 15:52
721 查看
先创建一个生成随机字符串
通过GD库做验证图片
调用该函数
verifyImage();
verifyImage(2,4,4,4);
verifyImage(3,4,4,4);
/** * 生成验证码 * @param int $type * @param int $length * @return string */ function buildRandomString($type=1,$length=4){ if ($type == 1) { $chars = join ( "", range ( 0, 9 ) ); } elseif ($type == 2) { $chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ) ) ); } elseif ($type == 3) { $chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ), range ( 0, 9 ) ) ); } if ($length > strlen ( $chars )) { exit ( "字符串长度不够" ); } $chars = str_shuffle ( $chars ); return substr ( $chars, 0, $length ); }
通过GD库做验证图片
require_once 'string.func.php'; //通过GD库做验证码 function verifyImage($type=1,$length=4,$pixel=0,$line=0,$sess_name = "verify"){ //创建画布 $width = 80; $height = 28; $image = imagecreatetruecolor ( $width, $height ); $white = imagecolorallocate ( $image, 255, 255, 255 ); $black = imagecolorallocate ( $image, 0, 0, 0 ); //用填充矩形填充画布 imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white ); $chars = buildRandomString ( $type, $length ); $_SESSION [$sess_name] = $chars; //这里需要创建一个文件夹来存放字体 $fontfiles = array ("LHANDW.TTF","LSANS.TTF","LTYPE.TTF"); for($i = 0; $i < $length; $i ++) { $size = mt_rand ( 14, 18 ); $angle = mt_rand ( - 15, 15 ); $x = 5 + $i * $size; $y = mt_rand ( 20, 26 ); $fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )]; $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) ); $text = substr ( $chars, $i, 1 ); imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text ); } //创建模糊点 if ($pixel) { for($i = 0; $i < 50; $i ++) { imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black ); } } //创建模糊线 if ($line) { for($i = 1; $i < $line; $i ++) { $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) ); imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color ); } } //展示图片 header ( "content-type:image/gif" ); imagegif ( $image ); imagedestroy ( $image ); }
调用该函数
verifyImage();
verifyImage(2,4,4,4);
verifyImage(3,4,4,4);
相关文章推荐
- PHP设计模式
- commons.net FTP 实现断点续传
- PHP系统时区设置
- zend studio svn安装过程
- PHPstorm的快捷方式
- php编程中echo用逗号和用点号连接的区别
- PHP编程效率的20个要点
- InputStream重用技巧(利用ByteArrayOutputStream)
- PHP旧的SQL接口警告信息影响XML 2016.03.25回顾
- thinkphp框架中引入ping++支付server SDK
- PHP文件的路径及操作
- PHP的五大阶段
- PHP isset()与empty()的使用区别详解
- php学习日记1 ----面向对象基础
- zend studio设置utf8
- PHP项目的设计过程
- 恭贺自己itpub和csdn双双获得专家博客称号
- PHP之GD
- 整理php防注入和XSS攻击通用过滤
- phpMyAdmin 配置文件现在需要一个短语密码的