>백엔드 개발 >PHP 튜토리얼 >PHP Ajax는 확인 code_php 예제의 실시간 확인을 구현합니다.

PHP Ajax는 확인 code_php 예제의 실시간 확인을 구현합니다.

WBOY
WBOY원래의
2016-08-04 08:56:44781검색

PHP의 이미지 처리 기능은 강력하고, 인증코드 이미지를 만드는 방법도 매우 간단합니다. 그런데 실시간 인증을 구현하다 보면 다음과 같은 문제가 발생했습니다.
외부 액세스를 활성화하기 위해 nat123을 사용하여 내 컴퓨터에서 웹사이트를 포트 매핑했습니다. 원래 쿠키를 사용하여 js를 사용하여 확인 코드를 확인했지만 테스트 후에 nat123을 사용하면 내 웹사이트에서 사용자 정의 URL에 액세스할 수 있지만 네트워크에서 인증코드를 생성하는 PHP 파일의 위치가 다른 페이지와 동일한 도메인에 있지 않습니다. 쿼리 결과 출력 이미지로 인해 폴더에 캐시 파일로 매핑되어 있는 것으로 확인되었습니다. —다른 페이지는 내 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를 사용하여 인증 코드를 받을 수 있습니다.
그런 다음 검증 프로세스는 특정 조건에 의해 트리거되는 함수에 캡슐화되어 실시간으로 검증될 수 있습니다.

위 글의 내용은 모두의 공부에 도움이 되길 바랍니다.

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