2018.1.30 PHP编程之验证码
PHP编程之验证码
1.创建验证码函数
验证码函数输入通用函数,将函数放入global.func.php里。
//创建一个随机码
for($ i=0;$i<4;$i++){
$_nmsg. = dechex(mt_rand(0,15));
}
//将验证码保存到session里
$_SESSION['code'] = $_nmsg;
//设定验证码的图片的长度和高度
$_width = 75;
$_height = 25;
//创建图片
$_img = imagecreatetruecolor($_width,$_height);
//创建一个白色
$_white = imagecolorallocate($_img,255,255);
//填充背景
imagefill($_img,0,0,$_white);
//创建一个黑色的边框
$_black = imagecolorallocate($_img,100,100,100);
imagerectangle($_img,0,0,$_width-1,$_height-1,$_black);
//随机划线条
for($i = 0;$i<6;$i++){
$_rnd_color = imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imageline($_img,mt_rand(0,75),mt_rand(0,75),mt_rand(0,75),$_rnd_color);
}
//随机打雪花
for($i=1;$i<100;$i++){
imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_heigth),"*",
imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
}
//输出验证码
for($i=0;$i<strlen($_SESSION['code']);$i++){imagestring($_img,mt_rand(3,5),$i*$_width/4+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code'][$i],imagecoklorallocate($_img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));
}
//输出销毁
header("Content-Type:image/png");
imagepng($_img);
2.注册页面调用
code.php已经生成一张图片,所以,直接用图片插入的方式即可
<img src = "code.php" id="code"/>
JS点击局部刷新
这段代码放入图片区域,可以自动刷新局部
onclick = "javascript:this.src = 'code.php?tm = '+Math.random()"
然后采用分离JS的原则分离出去
3.将验证码包装成函数
在核心函数里创建一个_code 函数,将验证码代码放入。
然后设置参数,最大的提供灵活性。
注意:如果没有任何设置,必须有默认值
4.编写函数注释
将_code() 函数编写注释,让代码更清晰
2018.1.30 PHP编程之验证码的更多相关文章
- 2018.12.30【NOIP提高组】模拟赛C组总结
2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...
- 2018.8.30 nowcoder oi赛制测试1
2018.8.30 nowcoder oi赛制测试1 普及组难度,发现了一些问题 A 题目大意:求斐波那契数列\(f(k-1)f(k+1)-f(k)^2\),范围极大 打表可得规律 其实是卡西尼恒等式 ...
- 2018.5.30 Oracle数据库PLSQL编程---游标的使用
显示游标的步骤 /* 显示游标处理步骤 1.声明游标 语法结构:cursor 游标名称 is SQL 语句; 2.打开游标 语法结构:open游标名称; 3.提取数据 语法结构:fetch 4.关闭游 ...
- 2018.12.02 Socket编程之初识Socket
Socket编程主要分为TCP/UDP/SCTP三种,每一种都有各自的优点,所以会根据实际情况决定选用何种Socket,今天开始我将会逐步学习Socket编程,并将学习过程记录于此. 今天学习的是TC ...
- [转]Python程序员必须知道的30条编程技巧
30 tips & tricks for Python Programming 1 直接交换两个数字位置 x, y = 10, 20 print(x, y) x, y = y, x prin ...
- DAY 30 网络编程基础
一.软件开发架构 1.c/s架构 c:客户端 s:服务端 2.b/s架构 b:浏览器 c:服务器 手机端:好像C/S架构比较火,其实不然,微信小程序.支付宝第三方接口 B/S架构的优点是统一接口 PC ...
- 网易2018校招内推编程题-堆棋子-C++实现
链接:https://www.nowcoder.com/questionTerminal/27f3672f17f94a289f3de86b69f8a25b来源:牛客网 [编程题]堆棋子 热度指数:14 ...
- 2018.10.30 bzoj4942: [Noi2017]整数(线段树压位)
传送门 直接把修改的数拆成logloglog个二进制位一个一个修改是会TLETLETLE的. 因此我们把303030个二进制位压成一位储存在线段树里面. 然后维护区间中最靠左二进制位不为0/1的下标. ...
- EZ 2018 03 30 NOIP2018 模拟赛(六)
链接:http://211.140.156.254:2333/contest/67 转眼间上次加回来的Rating又掉完了. 这次不知为何特别水,T1想了一段时间没想出来弃了,导致后面心态炸了. T2 ...
随机推荐
- jmeter-CSV Data Set Config
在使用Jemeter测试的时候,往往需要参数化用户名,密码以到达到多用户使用不同的用户名密码登录的目的.这个时候我们就可以使用CSV Data Set Config实现参数化登录: 首先通过Test ...
- sass(scss)10大常用重要特性
用sass用了好久,期初看中的是他的嵌套功能,因为刚开始的时候是用jquery,电脑安装Ruby,全局安装sass,将scss编译为css,不得不说真的很方面,节点套节点,和html的很类似.但是后来 ...
- Flask&&人工智能AI --4
一.flask请求上下文源码解读 通过上篇源码分析,我们知道了有请求发来的时候就执行了app(Flask的实例化对象)的__call__方法,而__call__方法返回了app的wsgi_app(en ...
- Hadoop_配置Hadoop开发环境(Eclipse)
通常我们可以用Eclipse作为Hadoop程序的开发平台. 1) 下载Eclipse 下载地址:http://www.eclipse.org/downloads/ 根据操作系统类型,选择合适的版本 ...
- URAL 2080 Wallet
找规律发现只要找到两个相同数字之间,有多少个不同的数字,即为答案. 可以用树状数组离线处理. 坑点是卡有很多张,没用完的情况,后面的卡直接放在哪里, 就是 10 5 1 2 3 4 5 这样 开始数据 ...
- (转)yi_meng linux 下 ifcfg-eth0 配置 以及ifconfig、ifup、ifdown区别
linux 下 ifcfg-eth0 配置 以及ifconfig.ifup.ifdown区别 原文:https://www.cnblogs.com/yi-meng/p/3214471.html这3个命 ...
- Unity在Project视图里面显示文件的拓展名
Unity在Project视图里面显示文件的拓展名 功能脚本如下: using System.IO; using System.Reflection; using UnityEngine; using ...
- JavaEE 7 新特性之WebSocket
开发环境: JDK:1.7及以上 JavaEE:1.7,因为只有javaee7才有websocke的api,也可以使用1.6单都导入websocket-api.jar试试(本人不清楚) 注意:没有使用 ...
- 提高PHP编程效率的20个要点
用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中 ...
- 来自于51CTO的经典学习资料汇总
移动开发类: 1.2012Android开发热门资料(110个) http://bbs.51cto.com/thread-934023-1.html 2.[绝对给力]Android开发免豆 ...