php生成图片验证码的方法
发布:smiling 来源: PHP粉丝网 添加日期:2019-08-22 11:44:49 浏览: 评论:0
本文为大家分享了php生成图片验证码的方法,供大家参考,具体内容如下.
首先从指定字符集合中随机抽取固定数目的字符,以一种不规则的方法画在画布上,再适当添加一些干扰点和干扰元素,最后将图片输出,一张崭新的验证码就完成了。
前端代码如下:
- <meta http-equiv="content-type" content="text/html;charset=utf-8">
- <title>This is a test!</title>
- <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
- <form name="form">
- <input type="text" placeholder="账号"><br>
- <input type="password" placeholder="密码"><br>
- <input type="text" placeholder="验证码">
- <img id="verImg" src="libs/verification.php">
- <a href="#" class="change" onclick="changeVer()">点击刷新</a><br>
- <input type="submit" value="登录">
- </form>
- <script type="text/javascript">
- //刷新验证码
- function changeVer(){
- document.getElementById("verImg").src="libs/verification.php?tmp="+Math.random();
- }
- </script>
php脚本文件验证码的代码如下:
- <?php
- session_start();
- //开启session记录验证码数据
- vCode(4, 15);//设置验证码的字符个数和图片基础宽度
- //vCode 字符数目,字体大小,图片宽度、高度
- function vCode($num = 4, $size = 20, $width = 0, $height = 0) {
- !$width && $width = $num * $size * 4 / 5 + 15;
- !$height && $height = $size + 10;
- //设置验证码字符集合
- $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";
- //保存获取的验证码
- $code = '';
- //随机选取字符
- for ($i = 0; $i < $num; $i++) {
- $code .= $str[mt_rand(0, strlen($str)-1)];
- }
- //创建验证码画布
- $im = imagecreatetruecolor($width, $height);
- //背景色
- $back_color = imagecolorallocate($im, mt_rand(0,100),mt_rand(0,100), mt_rand(0,100));
- //文本色
- $text_color = imagecolorallocate($im, mt_rand(100, 255), mt_rand(100, 255), mt_rand(100, 255));
- imagefilledrectangle($im, 0, 0, $width, $height, $back_color);
- // 画干扰线
- for($i = 0;$i < 5;$i++) {
- $font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
- imagearc($im, mt_rand(- $width, $width), mt_rand(- $height, $height), mt_rand(30, $width * 2), mt_rand(20, $height * 2), mt_rand(0, 360), mt_rand(0, 360), $font_color);
- }
- // 画干扰点
- for($i = 0;$i < 50;$i++) {
- $font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
- imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $font_color);
- }
- //随机旋转角度数组
- $array=array(5,4,3,2,1,0,-1,-2,-3,-4,-5);
- // 输出验证码
- // imagefttext(image, size, angle, x, y, color, fontfile, text)
- @imagefttext($im, $size , array_rand($array), 12, $size + 6, $text_color, 'c:\WINDOWS\Fonts\simsun.ttc', $code);
- $_SESSION["VerifyCode"]=$code;
- //no-cache在每次请求时都会访问服务器
- //max-age在请求1s后再次请求会再次访问服务器,must-revalidate则第一发送请求会访问服务器,之后不会再访问服务器
- // header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
- header("Cache-Control: no-cache");
- header("Content-type: image/png;charset=gb2312");
- //将图片转化为png格式
- //phpfensi.com
- imagepng($im);
- imagedestroy($im);
- }
- ?>
Tags: php生成图片验证码
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)