验证码通过GD生成PNG,并把$randval随机数字赋给
$_SESSION['login_check_num'],在通过用户输入的$_POST进行比较,来判断是否正确。达到需要实现的功能,需要修改phpini文件,使php支持GD库。
<php
//调用此页面,如果下面的式子成立,则生成验证码
if($_GET["action"]=="verifycode")
{
rand_create();
}
//验证码生成
function rand_create()
{
//通知浏览器将要输出PNG
Header("Content-type: image/PNG");
//准备好随机数发生器种子
srand((double)microtime()1000000);
//准备的相关参数
$im = imagecreate(62,20);
$black = ImageColorAllocate($im, 0,0,0); //RGB黑色标识符 $white =
ImageColorAllocate($im, 255,255,255); //RGB白色标识符 $gray = ImageColorAllocate($im,
200,200,200); //RGB灰色标识符 //开始作图
imagefill($im,0,0,$gray);
while(($randval=rand()%100000)<10000);{
$_SESSION["login_check_num"] = $randval;
//将四位整数验证码绘入
imagestring($im, 5, 10, 3, $randval, $black);
}
//加入干扰象素
for($i=0;$i<200;$i++){
$randcolor =
ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor); }
//输出验证
ImagePNG($im);<%@ page contentType="image/jpeg" import="javaawt,
javaawtimage,javautil,javaximageio" %>
<%!
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+randomnextInt(bc-fc);
int g=fc+randomnextInt(bc-fc);
int b=fc+randomnextInt(bc-fc);
return new Color(r,g,b);
}
%>
<%
//设置页面不缓存
//responsesetHeader("Pragma","No-cache");
//responsesetHeader("Cache-Control","no-cache");
//responsesetDateHeader("Expires", 0);
// 在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImageTYPE_INT_RGB);
// 获取图形上下文
Graphics g = imagegetGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
gsetColor(getRandColor(200,250));
gfillRect(0, 0, width, height);
//设定字体
gsetFont(new Font("Times New Roman",FontPLAIN,18));
//画边框
//gsetColor(new Color());
//gdrawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
gsetColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = randomnextInt(width);
int y = randomnextInt(height);
int xl = randomnextInt(12);
int yl = randomnextInt(12);
gdrawLine(x,y,x+xl,y+yl);
}
// 取随机产生的认证码(4位数字)
String sRand="";
for (int i=0;i<4;i++){
String rand=StringvalueOf(randomnextInt(10));
sRand+=rand;
// 将认证码显示到图象中
gsetColor(new Color(20+randomnextInt(110),20+randomnextInt(110),20+randomnextInt(110)));
//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
gdrawString(rand,13i+6,16);
}
// 将认证码存入SESSION
sessionsetAttribute("rand",sRand);
// 图象生效
gdispose();
// 输出图象到页面
ImageIOwrite(image, "JPEG", responsegetOutputStream());
%>我自己试验过可行,不行的话继续追问我帮你解决
第一步,找到 /plus/diyphp这个文件,在头部加入代码:
require_once(DEDEINC'/membermodelclsphp');
找到以下代码:
elseif($do == 2)
{
$dede_fields = empty($dede_fields) '' : trim($dede_fields);
$dede_fieldshash = empty($dede_fieldshash) '' : trim($dede_fieldshash);
if(!empty($dede_fields))
{
if($dede_fieldshash != md5($dede_fields$cfg_cookie_encode))
{
showMsg('数据校验不对,程序返回', '-1');
exit();
}
}
将其改为:
elseif($do == 2)
{
$svali = GetCkVdValue();
if(preg_match("/1/",$safe_gdopen)){
if(strtolower($vdcode)!=$svali || $svali=='')
{
ResetVdValue();
ShowMsg('验证码错误!', '-1');
exit();
}
}
$dede_fields = empty($dede_fields) '' : trim($dede_fields);
$dede_fieldshash = empty($dede_fieldshash) '' : trim($dede_fieldshash);
if(!empty($dede_fields))
{
if($dede_fieldshash != md5($dede_fields$cfg_cookie_encode))
{
showMsg('数据校验不对,程序返回', '-1');
exit();
}
}
第二步,在使用验证码的自定义表单静态页面中插入如下代码:
<input id="vdcode" style="width: 50px; text-transform: uppercase;" type="text" name="vdcode" />
<img id="vdimgck" style="cursor: pointer;" onclick="thissrc=thissrc+''" alt="看不清?点击更换" src="/include/vdimgckphp" align="absmiddle" /> 看不清? <a onclick="changeAuthCode();" href="javascript:void(0)">点击更换</a>
第三步,在这个静态页面里还得引用JQuery,再加入 JS代码:
<script type="text/javascript">// <![CDATA[
$ = jQuery;
function changeAuthCode() {
var num = new Date()getTime();
var rand = Mathround(Mathrandom() 10000);
num = num + rand;
$('#ver_code')css('visibility','visible');
if ($("#vdimgck")[0]) {
$("#vdimgck")[0]src = "/include/vdimgckphptag=" + num;
}
return false;
}
</script>安装软件,请输入oppo帐号,应该怎么加验证码?安装软件提示需要OPPO账号的原因:出于安全考虑,为了防止恶意安装行为,除了渠道和商店类应用,都会要求输入OPPO帐号密码,才允许安装;如果没有登录OPPO帐号,则会提示用户登录OPPO帐号。以下是注册OPPO账号的具体 *** 作:您可以打开手机桌面OPPO会员--点击一键注册--输入未被注册的手机号码--输入收到的短信验证码,(账号密码可以自己设置)按照系统 *** 作即可。不能加验证码。
扩展:微信支付不支持主动设置手机验证码;在零钱每日消费超过两千之后,才会触发这个验证码的;如果想要每笔都有验证码,可以不在微信支付中充值零钱,直接使用yhk快捷支付,同时要求银行只要有资金进出,就校验短信。
为了安全,微信支付前两次需要手机验证码,第三次不需要,可能的原因有:
1、用于支付的yhk对应的银行在两次支付后,自动开通了快捷支付的功能。
2、前两次金额超过银行设定的门限,出于个人资金安全考虑,需要进行验证,而第三次支付金额小,低于设定门限,直接进行了快捷支付。
3、收款商家是同一家,已经被认定为是安全交易。
1进入手机桌面,选择“设置”,如图所示点进。
2选择"iTunnes Store和App Store"。然后在邮箱的收件箱中,找到一封来自 Apple 的验证邮件,点击打开,第一个选项如图圈出位置:
3进入账号密码页面,点击“设置双重认证”。如图所示:
4其他非iOS9系统的,点击“仍要打开”。
5Apple ID没绑定过xyk,点击“仍要打开”。如图所示:
6添加手机号,等待验证码,填写上去。
7收到验证码后,输入到界面里。
8在页面里输入想要设置的密码点进,如图所示:
9账号被盗后将会通过你设置的信任电话号码找回。
10两步验证设置成功。点击验证链接后,会自动跳转到 Apple ID 的验证页面,稍等即可验证成功。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)