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代码书写习惯优化小结
Jun 20 PHP
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
dedecms集成财付通支付接口
Dec 28 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
Aug 14 PHP
laravel ORM关联关系中的 with和whereHas用法
Oct 16 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 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
php miniBB中文乱码问题解决方法
2008/11/25 PHP
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
js跳转页面方法总结
2014/01/29 Javascript
PHP守护进程实例
2015/03/06 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python Socket传输文件示例
2017/01/16 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
python for和else语句趣谈
2019/07/02 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
雪山饭庄的创业计划书范文
2014/01/18 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
主管会计岗位职责
2014/03/13 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
神龙架导游词
2015/02/11 职场文书
员工自我评价范文
2015/03/11 职场文书
大学生求职信怎么写
2015/03/19 职场文书
2015年纪委工作总结
2015/05/13 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
求职自我评价参考范文
2019/05/16 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android