怎么用php开发验证码(PHP简单验证码功能机制实例详解)
类别:编程学习 浏览量:1814
时间:2022-04-01 01:09:14 怎么用php开发验证码
PHP简单验证码功能机制实例详解本文实例讲述了PHP简单验证码功能机制。分享给大家供大家参考,具体如下:
网站的安全性是开发者不可忽视的一个问题,目前使用最多的一种可以提高网站安全性的方法就是使用验证码功能机制,有的仅仅使用一个几位数字字母混乱的验证码,有的进行手机发送短信进行验证,有的使用邮箱发送邮件进行验证,但是这个验证码功能机制是如何实现的呢?下面就为大家详细解释验证码功能机制的实现思路以及简单的实现方法。
1、验证码功能机制实现思路
① 常规的验证码实现:
a、产生一张png的图片
b、为图片设置背景色
c、设置字体颜色和样式
d、产生4位数的随机的验证码
e、把产生的每个字符调整旋转角度和位置画到png图片上
f、加入噪点和干扰线防止注册机器分析原图片来恶意注册
g、输出图片
h、释放图片所占内存
i、将验证码保存到session或是数据库
j、将和输入的验证码进行对比
② 短信(邮箱)验证码机制:
a、产生4-6位数的随机的验证码
b、把产生的每个字符保存到session或是数据库
c、将验证码发送到用户的手机(邮箱)
d、用户在规定时间内进行输入
e、将验证码从session或是数据库中取出
f、将和输入的验证码进行对比验证
2、简单的实现验证码功能机制
① 新建captcha.php,写入以下代码
|
<?php /** * ======================================= * Created by WeiBang Technology. * User: Wei ZhiHua * Date: 2016/10/12 0020 * Time: 下午 4:14 * Power: 实现验证码功能 * ======================================= */ //开启session session_start(); //创建一个大小为 100*30 的验证码 $image = imagecreatetruecolor(100, 30); $bgcolor = imagecolorallocate( $image , 255, 255, 255); imagefill( $image , 0, 0, $bgcolor ); $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 ); } //就生成的验证码保存到session $_SESSION [ 'authcode' ] = $captch_code ; //在图片上增加点干扰元素 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, 29), $pointcolor ); } //在图片上增加线干扰元素 for ( $i = 0; $i < 3; $i ++) { $linecolor = imagecolorallocate( $image , rand(80, 220), rand(80, 220), rand(80, 220)); imageline( $image , rand(1, 99), rand(1, 29), rand(1, 99), rand(1, 29), $linecolor ); } //设置头 header( 'content-type:image/png' ); imagepng( $image ); imagedestroy( $image ); ?> |
② 新建form.php,写入以下代码
|
<?php /** * ======================================= * Created by WeiBang Technology. * User: Wei ZhiHua * Date: 2016/10/12 0021 * Time: 下午 4:14 * Power: 实现验证码功能 * ======================================= */ if (isset( $_REQUEST [ 'authcode' ])) { session_start(); if ( strtolower ( $_REQUEST [ 'authcode' ]) == $_SESSION [ 'authcode' ]) { echo "输入正确!" ; } else { echo "输入错误!" ; } exit (); } ?> <!DOCTYPE html> <html> <head> <meta http-equiv= "content-type" content= "text/html;charset=utf-8" /> <title>确认验证码</title> </head> <body> <form method= "post" action= "./form.php" > <p>验证码图片: <img id= "captcha_img" border= "1" src= "./captcha.php?r=<?php echo rand(); ?>" width=100 height=30> <a href= "javascript:void(0)" rel= "external nofollow" 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= "提交" style= "padding:6px 20px;" ></p> </form> </body> </html> |
以上就是php验证码的制作思路和实现方法,从简单到复杂,可以根据这些写出非常完美的验证码功能机制。
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣
- php生成安全随机数(PHP随机数函数rand与mt_rand的讲解)
- php闰年计算公式(php判断/计算闰年的方法小结三种方法)
- thinkphp微信开发实例(ThinkPHP框架下微信支付功能总结踩坑笔记)
- php redis配置(php+redis实现消息队列功能示例)
- thinkphp5.1插件实现(Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例)
- php实现redis核心代码(PHP结合Redis+MySQL实现冷热数据交换应用案例详解)
- php读取txt乱码怎么办(解决php写入数据库乱码的问题)
- php开发pdo事务处理(Cpanel下Cron Jobs定时执行PHP的方法)
- php中数组使用技巧(php常用经典函数集锦数组、字符串、栈、队列、排序等)
- php数组是怎么实现的(PHP里的$_GET数组介绍)
- php开发模式有哪些(PHP设计模式之简单工厂和工厂模式实例分析)
- phpstudy修改为什么进不去(phpstudy2018升级后站点及phpmyadmin打开404解决方案)
- php符串使用教程学习(PHP实现支持CURL字符串证书传输的方法)
- phpcurl请求能在日志里记录吗(php使用curl模拟多线程实现批处理功能示例)
- php中变量定义规则(php use和include区别总结)
- php和java联系(PHP实现与java 通信的插件使用教程)
- 成功破圈,小牛电动SQi强势开 跨(小牛电动SQi强势开)
- 挑战新国标电自天花板,九号机械师MMAX 110P深度体验(挑战新国标电自天花板)
- 《满江红》不要只当电影看,学生应该这样做(满江红不要只当电影看)
- 电影《民间怪谈录之走阴人》定档8月5日,开启一场中式惊悚之旅(电影民间怪谈录之走阴人定档8月5日)
- 原创图画书,以儿童视角讲述中国故事(以儿童视角讲述中国故事)
- 八月再见 愿你岁月不扰,余生静好(八月再见愿你岁月不扰)
热门推荐
- python dict 操作(Python中dict和set的用法讲解)
- SQL Server与Oracle数据类型的对应关系
- python自动化邮件管理(Python实现E-Mail收集插件实例教程)
- phplaravel开发规范(Laravel解决nesting level错误和隐藏index.php的问题)
- linux wait函数(分析从Linux源码看TIME_WAIT的持续时间)
- python编程中冒号的用法(浅谈python中get pass用法)
- django url配置失效(解决Django生产环境无法加载静态文件问题的解决)
- 如何看idea连接mysql数据库(IDEA 链接Mysql数据库并执行查询操作的完整代码)
- python读写文件实验心得(Python文件读写常见用法总结)
- linux nginx搭建(Ubuntu使用nginx搭建webdav文件服务器的详细过程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9