Home >php教程 >PHP开发 >PHP+Ajax realizes real-time verification of verification code

PHP+Ajax realizes real-time verification of verification code

高洛峰
高洛峰Original
2016-12-23 17:33:001108browse

PHP’s image processing function is powerful, and it is very simple to make a verification code picture. However, when implementing real-time verification, I did encounter a problem:
I used nat123 to port map the website on my computer, and achieved When accessing from the outside, I originally used cookies to verify the verification code using JS. However, after inspection, I found that although nat123 allows my website to be accessed through a customized URL, the location of the PHP file that generates the verification code on the network is It turns out that it is not in the same domain as other pages. After querying, we found that because of the output image, it was mapped in a certain folder as a cache file, so - other pages are under my URL, and the page that generates the verification code is under In another URL, their cookies cannot be shared. No matter how I set the path and domain, it doesn't work, so I had to use the session to store the verification code, because the session exists on the server, that is, it can be accessed in my local URL.
The next step is the main event. I have only had a rough understanding of ajax before, and I still know its uses and characteristics. However, I don’t know how to start using the relatively general concept of obtaining data from the background.
First, I analyzed the code of an example question, which is used to obtain the content of a text file in the background:

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!");
  }
}

The key is:

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

These three sentences specify the page to which the GET request is sent and the XMLHttpRequest object to send back the response. The processing function is triggered when, and the data is obtained through request.responseText.

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

But the data I want to obtain is the verification code generated by the background php file. How? Let the background send a verification code?
No matter the GET or POST method, the data is sent to the background. Where does ajax retrieve the data from the background?
Puzzled, I checked another information and found an example:
The processing statement of the response returned by the XMLHttpRequest object is:

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

The requested file is check.php
There are a few sentences in it Conditional output:

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

In the rendering of the running example, a message box pops up on the static page, with the content such as the output of the check.php page! ! !
That is to say, ajax can request the output content of a php page, so the next step is much simpler, because the picture is also the output of the verification code page, so you cannot directly ajax the verification code page, otherwise the data of the picture will also be obtained.
Create a new php page:

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

Then use ajax to make a GET request to this page on the front end, and you can use request.responseText to get the verification code.
Then encapsulate the verification process in a function triggered by certain conditions to verify in real time.

The above is the entire content of this article. I hope it will be helpful to everyone’s learning. I also hope that everyone will support the PHP Chinese website.

For more articles related to PHP+Ajax implementing real-time verification of verification code, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn