怎么用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简单计算权重的方法示例适合抽奖类应用)
- phpstudyv8.0使用教程学习(phpStudy环境安装SSL证书教程)
- OpenLDAP docker使用教程(Docker搭建OpenLDAP+phpLDAPadmin统一用户认证的方法)
- phpstudy修改为什么进不去(phpstudy2018升级后站点及phpmyadmin打开404解决方案)
- php redis应用场景(PHP商品秒杀问题解决方案实例详解mysql与redis)
- php联合注入列表总结(php中的依赖注入实例详解)
- 深入理解php 变量(不常用但很实用的PHP预定义变量分析)
- apache和php如何配置(Apache2与PHP5 for WinXP简单配置技巧)
- php防sql注入(万能密码的SQL注入漏洞其PHP环境搭建及防御手段)
- php依赖注入和控制反转的区别(php反射学习之依赖注入示例)
- phpstudy服务器怎么设置(phpstudy本地环境开启.htaccess伪静态方法)
- php连接mysql需要数据源吗(php连接mysql数据库最简单的实现方法)
- phpredis怎么设置队列(php使用lua+redis实现限流,计数器模式,令牌桶模式)
- php怎么设计状态模式(php设计模式之观察者模式定义与用法经典示例)
- php 记录的已读状态(PHP使用观察者模式处理异常信息的方法详解)
- php数组取值方法(php给数组赋值的实例方法)
- 相声转行影帝,被何晴抛弃,甩10年女友闪婚生子,刘威不靠谱情史(相声转行影帝被何晴抛弃)
- 岳云鹏不说相声,改行演员了 网友 快回来说相声(岳云鹏不说相声)
- 乔欣首演古装大女主,颜值演技双在线(乔欣首演古装大女主)
- 于正又推女性古装大剧 杨蓉乔欣演女配,两位女主成 重头戏(于正又推女性古装大剧)
- 乔欣古装女主戏获热度 作为女主,却没吃到红利(乔欣古装女主戏获热度)
- 爱情是什么(爱情是什么最经典的话)
热门推荐
- mysql多核cpu利用(mysql CPU高负载问题排查)
- php7用什么替代mysql(mysqli扩展无法在PHP7下升级问题的解决)
- vue官网编辑器主题(vue实现主题切换的多种思路分享)
- CSS中 z-index 的用法
- pythonrequests框架实例(Python requests模块实例用法)
- mysql中innodb四种事务级别(MySQL InnoDB 锁的相关总结)
- python模块学习之random模块(详解Python基础random模块随机数的生成)
- dedecms标签怎么调用(DEDECMS自定义表单提交后的跳转链接修改方法)
- pyqt5界面绘图(PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形)
- js解除网页屏蔽(js检测标题与描述中的关键词发现就替换或跳转到别的页面)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9