首页 > 开发 > PHP > 正文

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

2024-05-04 22:29:12
字体:
来源:转载
供稿:网友

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 "该用户名已被注册";}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表