2010-11-18 3 views
0

일부 메뉴 클릭시 주전산기로 PHP 생성 컨텐츠를로드하기 위해 아약스를 사용하고 있습니다.아약스로드 된 서브 페이지에서 새로 고침 페이지

일부 재로드 기능이 있습니다. 몇 가지 제한 시간이 만료되면 사용자가 다시 인증되기를 원하기 때문에 컨텐츠가 div에로드되기 전에 메뉴 클릭을 확인하고 있습니다.

PHP의 헤더 ("location : login");

나는 그것이로드 DIV 내부 리디렉션하고 싶은 생각,하지만 전체 페이지 리디렉션 할 ... 사실

답변

1

당신이 할 수있는 최선은 파일의 상단이

같은 몇 가지

ob_start(); 

가에

if($_SEESION['active']){ 
    ob_end_flush() 
}else{ 
    ob_clean(); 
    echo "{Session_invalid}"; 
    ob_end_flush(); 
} 

그런 다음 PHP 파일의 끝이 추가 귀하 AJAX (XMLHttpRequest)

ajax = new XMLHttpRequest(); 
ajax.open("GET", "/folder/yourFile.php", true); 
ajax.onreadystatechange = function(){ 
    if(readyState == 4){ 
     if(ajax.responseText == "{Session_invalid}"){ 
      document.location = "http://your.authenticate.url/" 
     }else{ 
      mydiv.innerHTML = ajax.responceText 
     } 
    } 
} 
ajax.send(); 

당신이 말한 것에이 말을 덧붙여서 아약스를 지우지 마십시오. AJAX에 체크를하면됩니다.

이 코드는 모든 파일에 추가 할 수 있도록 지어졌습니다. PHP 파일의 바로 위쪽과 아래쪽 편집이

이 user228395 점 1

1

는 XMLHttpRequest의 리디렉션 훨씬 이해가되지 않습니다. 기본적으로 몇 가지 옵션이 있습니다.

  1. 당신은 당신의 자바 스크립트는 (이 경우, 자바 스크립트로 리디렉션) 직접 할 필요가 있음을 이해하게하여 AJAX 호출 반환 뭔가를 할 수 있습니다.

  2. 사용자가 인증해야하는지 확인하기 위해 div에 콘텐츠를로드하기 전에 AJAX 호출을 수행합니다.

  3. 사용자의 세션이 만료되었는지 여부를 확인하기 위해 변수/쿠키를 보관합니다. 모든 요청을하기 전에 그 경우인지 확인하십시오. 그렇다면 사용자가 인증하도록합니다.

행운을 빈다!

+0

안녕과 일치 불구 태그가 있는지 확인하십시오, 모두 덕분에, 확실하지, 그것을 시도 할 것이다, 그래서 아직있는 솔루션입니다. 내가 jquery를 아약스로 사용하고 있다는 것을 잊어 버렸습니다. jquery를 성공 폼으로 가져 와서 "{Session_invalid}"응답과 일치시킬 수있을 것 같습니다. – myha