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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
在PHP中使用反射技术的架构插件使用说明
May 18 PHP
phpmyadmin3 安装配置图解教程
Mar 29 PHP
深入理解require与require_once与include以及include_once的区别
Jun 05 PHP
php数组中包含中文的排序方法
Jun 03 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
php自定义类fsocket模拟post或get请求的方法
Jul 31 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
php好代码风格的阶段性总结
Jun 25 PHP
PHP小偷程序的设计与实现方法详解
Oct 15 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
php快速导入大量数据的实例方法
Sep 23 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
js中更短的 Array 类型转换
2011/10/30 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
Win10下Python环境搭建与配置教程
2016/11/18 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
详解Python字典的操作
2019/03/04 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
调查研究项目计划书
2014/04/29 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
励志演讲稿800字
2014/08/21 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
工作简历自我评价
2015/03/11 职场文书
旅行社计调工作总结
2015/08/12 职场文书
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB