PHP+Ajax实现验证码的实时验证


Posted in PHP onJuly 20, 2016

PHP的图像处理功能强大,做一张验证码图片也是非常简单的,但是,在实现实时验证时,确遇到了一个难题:
我用nat123对我的电脑上的网站进行端口映射,实现了在外网访问,本来是采用cookie的方式用js对验证码进行验证,但是经检验发现nat123虽然使我的网站可以通过一个自定义的网址进行访问,但是产生验证码的php文件在网络上的位置竟然和其它页面不在一个域,经查询得知,因为输出图片的缘故,被作为缓存文件映射在了某个文件夹内,所以——其他页面在我的网址下,产生验证码的页面又在另一个网址里,所以它们的cookie不能共用,不管怎么设置path和domain都不管用,于是我只好采用session存储验证码了,因为session存在于服务器,也就是在我本地网址中都可以存取。
接下来是重头戏,之前只是粗略了解过ajax,对于它的用途和特性还是知道的,获取后台来的数据这个比较泛泛的概念具体的使用起来就不知道如何下手了。
首先,我分析了个例题的代码,用途是获取后台的一个文本文件的内容:

function getHTTPObject(){
  if(typedef XMLHttpRequest == "undefined")
    XMLHttpRequest = function(){
      try{ return new ActiveXObject("Msxml2.XMLHTTP.6.0");}
      catch(e){}
      try{ return new ActiveXObject("Msxml2.XMLHTTP.3.0");}
      catch(e){}
      try{ return new ActiveXObject("Msxml2.XMLHTTP");}
      catch(e){}
      return false;
    }
    return new XMLHttpRequest();
}
function getNewContent(){
  var request = getHTTPObject();
  if(request){
    request.open("GET","TEST.txt",true);
    request.onreadystateschange = function(){
      alert(request.responseText);
    }
  }else{
  alert("no support XMLHttpRequest!");
  }
}

其中的关键是:

request.open("GET","TEST.txt",true);
    request.onreadystateschange =function(){
      alert(request.responseText);
    }

这三句指定了GET请求发向的页面和XMLHttpRequest对象送回响应的时候触发的处理函数,而数据正是通过request.responseText获取的。

--------------------------------------------------------------------------------

可是我要获取的数据是后台php文件产生的验证码,怎么让后台发送验证码?
无论GET还是POST方式都是把数据发送到后台,ajax从哪里取回后台的数据呢?
百思不得其解之下,我又查询了另一本资料,找到一个示例:
其中XMLHttpRequest对象送回响应的处理语句是:

request.onreadystateschange=alertContent;
function alertContent(){
...
  alert(request.responseText);
...
}

请求的文件为check.php
其中有这么几句条件输出:

if($info){
  echo "你的用户名可以使用";
}else {
  echo "该用户名已被注册";
}

而运行实例效果图中赫然在静态页面弹出消息框,内容如check.php页面的输出!!!
也就是说ajax能请求到一个php页面的输出内容,于是,接下来简单多了,因为图片也是验证码页面的输出,所以不能直接ajax验证码页面,不然就把图片的数据也获取了。
新建一个php页面:

sission_start();
$code="";
if(!empty($_session['check']))$code=$_session['check'];
echo $code;

再在前端用ajax向这个页面GET一个请求,就能用request.responseText获取验证码了。
然后把验证过程封装在一定条件触发的函数里,即可实时验证。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
学习使用PHP数组
Oct 09 PHP
PHP操作文件方法问答
Mar 16 PHP
几个php应用技巧
Mar 27 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 PHP
php fread读取文件注意事项
Sep 24 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
PHP手机短信验证码实现流程详解
May 17 PHP
PHP APP微信提现接口代码
Sep 30 PHP
php抽象方法和普通方法的区别点总结
Oct 13 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
php+ajax注册实时验证功能
Jul 20 #PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 #PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 #PHP
php+flash+jQuery多图片上传源码分享
Jul 27 #PHP
php安装ssh2扩展的方法【Linux平台】
Jul 20 #PHP
值得分享的php+ajax实时聊天室
Jul 20 #PHP
php验证身份证号码正确性的函数
Jul 20 #PHP
You might like
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
python IP地址转整数
2020/11/20 Python
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
金融专业个人求职信
2013/09/22 职场文书
生物制药专业求职信
2014/03/11 职场文书
公益广告语集锦
2014/03/13 职场文书
售后服务质量承诺书
2015/04/29 职场文书
返乡农民工证明
2015/06/24 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android
html form表单基础入门案例讲解
2021/07/21 HTML / CSS