PHP简单验证码功能机制实例详解
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-14 12:08:22 浏览: 评论:0
这篇文章主要介绍了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验证码的制作思路和实现方法,从简单到复杂,可以根据这些写出非常完美的验证码功能机制。
Tags: PHP验证码
相关文章
- ·php网页生成验证码实现程序(2014-07-30)
- ·简单实例php验证码代码(2014-08-17)
- ·PHP验证码生成与验证例子(2014-08-22)
- ·PHP验证码生成程序几种方法(2014-08-22)
- ·PHP验证码实现代码简单示例(2014-08-22)
- ·php验证码程序代码(2014-08-22)
- ·PHP验证码之Ajax验证实现方法(2014-08-22)
- ·php中文汉字验证码程序(2014-08-23)
- ·一个完整php验证码实例程序(2014-08-25)
- ·php 用户登录验证码的实现方法(2014-09-11)
- ·php jquery 验证码代码(2014-09-20)
- ·php验证码生成器(2018-08-06)
- ·一个好用的PHP验证码类实例分享(2020-08-17)
- ·PHP+javascript制作带提示的验证码源码分享(2021-01-15)
- ·php程序总是提示验证码输入有误解决方案(2021-05-07)
- ·php验证码生成代码(2021-06-26)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)