>php教程 >PHP开发 >PHP+Ajax로 인증코드 실시간 검증 실현

PHP+Ajax로 인증코드 실시간 검증 실현

高洛峰
高洛峰원래의
2016-12-23 17:33:001093검색

PHP의 이미지 처리 기능은 강력하고 인증코드 이미지를 만드는 것은 매우 간단합니다. 그러나 실시간 인증을 구현할 때 문제가 발생했습니다.
내 컴퓨터에서 웹사이트를 포팅하기 위해 nat123을 사용했습니다. 매핑을 사용하면 원래는 js를 사용하여 인증 코드를 확인하는 데 쿠키가 사용되었습니다. 그러나 검사 결과 nat123은 사용자 정의 URL을 통해 내 웹사이트에 액세스할 수 있도록 허용했지만 인증 코드를 생성하는 php 파일이 있는 것으로 나타났습니다. 네트워크상의 위치가 다른 페이지와 동일한 도메인에 있지 않습니다. 검색 결과 출력 이미지로 인해 특정 폴더에 캐시 파일로 매핑되어 있으므로 - 내 URL 아래의 다른 페이지가 생성되었습니다. 인증 코드 페이지가 다른 URL에 있으므로 해당 쿠키를 공유할 수 없습니다. 경로와 도메인을 어떻게 설정해도 작동하지 않아서 세션이 존재하기 때문에 인증 코드를 저장하기 위해 세션을 사용해야 했습니다. 즉, 내 로컬 URL에 액세스할 수 있습니다.
다음 단계는 메인 이벤트입니다. 저는 이전에 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+Ajax 관련 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.