为了账号安全,请及时绑定邮箱和手机立即绑定

PHP实现验证码制作

难度初级
时长 1小时20分
学习人数
综合评分9.80
173人评价 查看评价
10.0 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • 简单验证码代码
    查看全部
  • PHP 写请求的消耗大于读请求的消耗。所以需要验证码来验证是否是机器人的自动操作。
    查看全部
    1 采集 收起 来源:验证码介绍

    2015-08-06

  • http://php.net/gd
    查看全部
  • 四个技术点: 1生成底图; 2生成验证内容 3生成验证码图片 4校验验证内容
    查看全部
  • $bgcolor=imagecolorallocate($image,255,255,255);//#ffffff 白色
    查看全部
  • resource imagecreatetruecolor(int $width,int $height); a、依赖GD扩展 b、输出图片前,必须提前输出图片header信息 c、该方法默认输出黑色背景
    查看全部
  • 视频对应源代码下载链接: http://pan.baidu.com/s/1o6pAqOM 密码: 369x
    查看全部
    1 采集 收起 来源:验证码介绍

    2015-06-22

  • <?php //生成一个图像大小为100*30 $image = imagecreatetruecolor(100,30); //分配颜色 $bgcolor = imagecolorallocate($image, 255, 255, 255); //填充颜色 imagefill($image, 0, 0, $bgcolor); //生成要输入文字 for($i=0;$i<4;$i++) { //字体大小 $fontsize = 6; //随机生产文字颜色 $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120)); //生成随机数字 $fontcontent = rand(0, 9); //绘制文字坐标 $x = rand(5,10)+100/4*$i; $y = rand(5,10); //绘制文字 imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); } //添加干扰点 200个 for($i=0;$i<200;$i++){ //随机产生颜色 $point = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200)); //绘制干扰点 imagesetpixel($image, rand(1,199), rand(1,29), $point); } header("content-type:image/png"); imagepng($image); imagedestroy($image);
    查看全部
  • 生成白色的底图代码
    查看全部
  • <?php session_start(); $image = imagecreatetruecolor( 100,30 ); $bgcolor = imagecolorallocate($image,255,255,255); imagefill($image,0,0,$bgcolor); for($i=0;$i<200;$i++){ $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(1,99),rand(1,99),$pointcolor); } for($i=0;$i<3;$i++){ $linecolor = imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220)); } $captch_code = ''; for($i=0;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data = 'abcdefghijkmnpqrstuvwxy3456789'; $fontcontent = substr($data,rand(0,strlen($data)-1),1); $captch_code.=$fontcontent; $x = ($i*100/4) + rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } header('content-type:image/png'); imagepng($image); $_SESSION['authcode'] = $captch_code; ?>
    查看全部
  • <?php header('content-type:text/html;charset=utf-8'); if(isset($_REQUEST['authcode'])){ session_start(); if(strtolower($_REQUEST['authcode']) == $_SESSION['authcode']){ echo '<font color="#0000cc">输入正确</font>'; }else{ echo '<font color="#0000cc">输入错误</font>'; } exit(); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>验证码确认</title> </head> <body> <form method="post" action="./form.php"> <p>验证码图片:<img border = "1" src="./captcha.php?r=<?php echo rand();?>"width:100px,height:100px" /></p> <p>请输入验证码内容:<input type="text" name="authcode" value="" /></p> <p> <input type="submit" value="提交" /></p> </form> </body> </html>
    查看全部
  • <?php header('content-type:text/html;charset=utf-8'); if(isset($_REQUEST['authcode'])){ session_start(); if(strtolower($_REQUEST['authcode']) == $_SESSION['authcode']){ echo '<font color="#0000cc">输入正确</font>'; }else{ echo '<font color="#0000cc">输入错误</font>'; } exit(); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>验证码确认</title> </head> <body> <form method="post" action="./form.php"> <p>验证码图片:<img border = "1" src="./captcha.php?r=<?php echo rand();?>"width:100px,height:100px" /></p> <p>请输入验证码内容:<input type="text" name="authcode" value="" /></p> <p> <input type="submit" value="提交" /></p> </form> </body> </html>
    查看全部
  • 技术点、难点分析: 技术点: 1)底图的实现,并且添加干扰元素:依赖PHP图片处理库GD,详细查看:http://php.net/gd 2)生成验证内容:简单的随机数生成,使用PHP函数mt_rand();随机数字+字幕生成,需要ASCⅡ码理论基础; 随机中文内容生成,需要UTF-8编码理论基础 3)验证内容保存在服务端:需要PHP操作SESSION基础 4)验证内容的校验:需要前端Ajax基础
    查看全部
  • // 数字+字母验证码 for ($i=0; $i < 4; $i++) { $fontsize = 6; // 0-120 为深色区,能更好的在浅色背景中识别验证码 $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120)); // 制作字典 并去除容易混淆的字符(l 与 1, z 与 2,等等) $data = 'abcdefghijkmnqprstuvwxy3456789'; // 通过截取字符串内容方法,获得随机字符 $fontcontent = substr($data, rand(0,strlen($data)),1); // 生成的验证内容不重叠 $x = ($i*100/4) + rand(5,10); // 生成的验证内容不齐平 $y = rand(5,10); // 用 $fontcolor 颜色将字符串 $fontcontent 画到 $image 所代表的图像的 $x,$y 坐标处 imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); }
    查看全部
  • for ($i=0; $i < 3; $i++) { // 颜色设置为 80-220 ,是为了使 线 与 点 与 验证码 更好的区分 $linecolor = imagecolorallocate($image, rand(80,220), rand(80,220), rand(80,220)); // imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color ) // imageline() 用 color 颜色在图像 image 中从坐标 x1,y1 到 x2,y2 画一条线段。 imageline($image, rand(1,99), rand(1,29), rand(1,99), rand(1,29), $linecolor) } PS: 干扰元素一定要控制好颜色,使之不影响用户识别验证码
    查看全部

举报

0/150
提交
取消
课程须知
本课程适合PHP初学者或者自学的童鞋们。
老师告诉你能学到什么?
1、如何拆解验证码项目 2、PHP的绘图扩展GD库的使用 3、如何用GD函数画图与验证码内容 4、如何用PHP做验证码校验,及动态校验 5、怎么实现中文、图片、视频验证码

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!