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

PHP实现验证码制作

难度初级
时长 1小时20分
学习人数
综合评分9.80
173人评价 查看评价
10.0 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • 动态校验
    查看全部
  • session
    查看全部
  • 验证码介绍
    查看全部
    0 采集 收起 来源:验证码介绍

    2017-11-03

  • <form method="post" action="./form.php"> <p> 验证码图片: <!-- 这里在 src 中添加一个随机数,是为了在使用 "换一个" 功能时,浏览器会以为 src 与之前的有所不同 而重新从服务器下载图片,否则浏览器会直接调用缓存中的 图片 或者甚至 不做任何动作 --> <img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand();?>" width:100px; height:30px/> <a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个</a> </p> <p>请输入图片中的内容:<input type="text" name="authcode" value="" /></p> <p><input type="submit" value="提交" ></p> </form>
    查看全部
  • <?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>
    查看全部
  • 这里打一个卡,利用memcache来存储session信息以达到在多服务器情况下几种管理session信息。
    查看全部
  • // 数字+字母验证码 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: 干扰元素一定要控制好颜色,使之不影响用户识别验证码
    查看全部
  • 总结语法: 1、imagestring(图像画布 ,大小,x轴坐标,y轴坐标,内容,颜色):水平地画出一行字符串 2、imagecolorallocate(图像画布,颜色1,颜色2,颜色3):为一幅图像分配颜色 3、imageline(图像画布,x1,y1,x2,y2,颜色):为一幅图像添加一条线段 4、imagesetpixel(图像画布,x,y,颜色):画出单一像素
    查看全部
  • <?php /*php之验证制作*/ //1、创建一个真空彩色图像 $image=imagecreatetruecolor(100,30); //2、为图像分配颜色 $bgcolor=imagecolorallocate($image,255,255,255); //3、填充图像 imagefill($image,0,0,$bgcolor); //4、在图像中添加随机数字 $code=''; $content=''; for($i=0;$i<4;$i++){ $fontsize=20; $code=rand(0,9); $fontcolor=imagecolorallocate($image,0,0,0); $x=$i*(100/4)+rand(5,10); $y=rand(5,15); $content.=$code; imagestring($image,$fontsize,$x,$y,$code,$fontcolor); } //增加干扰元素 for($i=0;$i<400;$i++){ $pointcolor=imagecolorallocate($image,rand(0,200),rand(0,200),rand(0,200)); imagesetpixel($image,rand(0,100),rand(0,30),$pointcolor); } session_start(); $_SESSION["content"]=$content; header('content-type:image/png'); imagepng($image); imagedestroy($image);
    查看全部
  • 技术点、难点分析: 技术点: 1)底图的实现,并且添加干扰元素:依赖PHP图片处理库GD,详细查看:http://php.net/gd 2)生成验证内容:简单的随机数生成,使用PHP函数mt_rand();随机数字+字幕生成,需要ASCⅡ码理论基础; 随机中文内容生成,需要UTF-8编码理论基础 3)验证内容保存在服务端:需要PHP操作SESSION基础 4)验证内容的校验:需要前端Ajax基础
    查看全部
  • 1、验证码流程 服务器设置验证码->判断是否输入正确:①、如果不正确,是Robot校验。②、如果正确,是person校验 2、为什么要屏蔽机器请求? 一般服务端业务,写请求产生的消耗要远远大于读请求。 3、验证码应用哪些场景? A、登录、注册确定提交前,Person/Robot校验 B、发布回复信息前,Person/robot校验 C、疑似Robot请求时,Person/robot校验
    查看全部
    0 采集 收起 来源:验证码介绍

    2018-03-22

  • 课程代码 https://gitee.com/xxg3053/captcha
    查看全部
  • 验证码所需技术
    查看全部

举报

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

微信扫码,参与3人拼团

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

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