使用PHP实现验证码
2016-06-13 19:29
513 查看
使用PHP实现验证码
实现验证码字符串
<?php /** * Created by PhpStorm. * User: sunnylinner * Date: 2016/6/13 * Time: 12:16 */ 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);//截取 }
实现验证码图片生成
<?php /** * Created by PhpStorm. * User: sunnylinner * Date: 2016/6/13 * Time: 12:16 */ require_once 'string.func.php'; //通过GD库做验证码 function verifyImage($type = 1, $length = 4, $pixel = 0, $line = 0,$sess_name = "verify") { session_start(); //创建画布 $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("msyh.ttc", "SIMLI.TTF", "SourceCodePro-Black.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 < $pixel; $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(2,4,20,5);
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- java自动生成验证码插件-kaptcha
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- php7 读取php.ini[4]
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- 如何识别高级的验证码的技术总结第1/4页
- PHP 5.3.0 安装分析心得