php实现登录验证码_php如何实现登录验证码
php实现登录验证码的方法:首先产生4到6位数的随机验证码;然后把产生的每个字符保存到session或数据库;接着将验证码发送到用户的手机;最后将和输入的验证码进行对比验证即可。
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();
}
?>
确认验证码
验证码图片:
onClick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?
请输入图片中的内容:
以上就是php验证码的制作思路和实现方法,从简单到复杂,可以根据这些写出非常完美的验证码功能机制。
php实现登录验证码_php如何实现登录验证码相关推荐
- 用 Flask 来写个轻博客 (21) — 结合 reCAPTCHA 验证码实现用户注册与登录
Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 添加账户管理蓝图 新建控制器(蓝图) 新建表单 新建蓝图 m ...
- python通过cookie绕过验证码_Python Selenium Cookie 绕过验证码实现登录示例代码
之前介绍过通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1.直接看代码,内有详细注释说明 # FileName : Wm_Cookie ...
- python 网站发送验证码_Python爬虫模拟登录带验证码网站
爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法.python提供了强大的url库,想做到这个并不难.这里以登录学校教务系统为例,做一个简单的例子. 首先得明白cookie的作用, ...
- JavaEE之--登录页面(用户名、密码、验证码)
1.登陆界面(简易制作,丑勿喷): login.jsp: <%@ page contentType="text/html;charset=UTF-8" language=&q ...
- 数字验证码识别完成自动化登录
一.人工方式处理数字验证码 通过selenium打开浏览器获取验证码,然后进行人工输入,从而实现登录 访问的学习通网页链接: xxt_link = r'https://passport2.chaoxi ...
- Python + selenium自动化工具 + 滑块验证码+点选验证码,实现模拟登录“中国铁路网12306”
文章目录 一.模拟登录"中国铁路网12306 1.引入库 2.初始化 3.将点选验证码图片,通过人工打码,返回目标像素位置(json格式). 4.点选验证码位置得到后,需要鼠标左击进行模拟人 ...
- Flask项目实战——6—(前台用户模型、前台登录注册、图形验证码、手机短信验证码、添加表单验证短信验证码请求)
1.前台用户模型 前台用户模型定义 创建前台模型文件 apps/front/models.py # -*- encoding: utf-8 -*- """ @File : ...
- python实现网站的自动登录(selenium实现,带验证码识别)
python实现网站自动登录(selenium实现,带验证码识别) 一.前言 这是鄙人写的第一篇博客,旨在总结一下近期所学,本文通过selenium工具实现工作所用网站的自动登录,下图为网站登录界面. ...
- 使用阿里云短信验证码API发送短信验证码(配置,获取短信验证码,注册,登录,密码重置)
获取阿里云短信验证码需要的配置信息. 如果是新用户,可以免费领取3个月,老用户的话就只能购买了,但是也不贵. 申请短信签名 申请短信模板 编写发送短信验证码的工具类 代码中我已经进行了详细的注释,也写 ...
- python爬虫之古诗文网中验证码的识别并登录----第三方平台
目标网站:古诗文网 目标网址:http://so.gushiwen.org/user/collect.aspx 任务要求: (1)通过selenium的方式模拟该网站的登录,并成功输入用户名和密码: ...
最新文章
- 二进制中1的个数(2)
- UA MATH563 概率论的数学基础 中心极限定理21 Skorohod定理的证明
- 编码练习——Java-数组-API-练习
- 性能测试(05)-表达式和业务关联-json关联
- 从流程上对rtmp协议经行总结
- clion 查看内容窗口_苹果电脑(macOS)查看 WiFi 密码的两种方法
- Modbus协议栈应用实例之五:Modbus ASCII主站应用
- python 列表比较不同_使用Python中的自定义比较功能对列表进行排序
- SQL Server便利名称
- 使用css3背景渐变中的透明度来设置不同颜色的背景渐变
- 38.使用标签-基础表单标签
- java 怎么给其他进程发送消息_Java程序与其它进程的数据通信
- python求绝对值_python绝对值怎么计算
- 微信小程序开发批量推送服务通知
- 零基础如何学习C语言?大神亲手总结 17 招,教你玩转C语言!
- Ubuntu 添加root用户
- 揭开腾讯云原生同城双活的秘密
- 干涉仪测向原理matlab,干涉仪测向原理.pdf
- 偏财入财库大富_八字有财库者大富
- layer.alert 点击确认按钮后跳转指定地址网页
热门文章
- Vue安装及环境配置、开发工具
- QPainter文档
- amd 安卓虚拟机_一款完美解决AMD兼容问题的安卓模拟器
- 怎样快速修改论文格式-使用人工智能技术助手
- maven环境变量的配置与idea中的配置
- 多个版本的BIND DNS软件都存在一个严重漏洞
- python画圆形螺旋线_在PDMS中使用python直接生成管口方位图(开源分享第三集)...
- 图解 JVM 内存结构
- flame linux mac,Autodesk版蓝宝石插件 GenArts Sapphire V10.0 (Mac/Linux)
- oracle10g 杨忠民,开题报告 基于J2EE的DRP系统设计