2013-10-04 3 views
0

헤더를 보낸 후 다른 페이지로 이동하는 방법?헤더를 보낸 후 다른 페이지로 이동하는 방법?

템플릿 파일에 몇 가지 코드가 포함되어 있는데, 일부 조건이 참일 때 PHP를 사용하여 다른 페이지로 건너 뛰고 싶습니다. 여기서는 헤더 명령을 사용할 수 없습니다. 헤더 정보는 다른 PHP 파일에서 전송되었습니다. 이 템플릿 파일 앞에. 그러면 어떻게 다른 URL로 바로 이동할 수 있습니까? js를 사용하는 유일한 방법은 무엇입니까?

Warning: Cannot modify header information - headers already sent by ... 
+3

코드를 다시 작성하여 헤더가 전송되기 전에 조건이 평가되도록하십시오. 그것은 더 깨끗한 PHP입니다. –

+0

효과가있는 경우 최소한 대답을 수락해야합니다. – CP510

답변

2

이렇게하려면 출력 버퍼링과 헤더 지우기를 사용하십시오.

ob_start() 
... 
if (!headers_sent()) { 
    foreach (headers_list() as $header) 
    header_remove($header); 
} 
ob_flush_end() 

테스트되지는 않았지만 촬영 해보세요.

1

두 가지 옵션이 있습니다.

  1. 출력을 보내기 전에 헤더 위치를 이동하십시오.
  2. 는 클라이언트 측 리디렉션을 사용하고 여기에 How to fix "Headers already sent" error in PHP

    메타

    <META http-equiv="refresh" content="5;URL=http://www.yourlink.com/new-link"> 
    

    가장 좋은 솔루션을 사용하여이

A/자바 스크립트를 사용

window.location = "http://www.yoururl.com"; 

B 두 가지 방법을 /이

1

CP510의 anaswer가 좋습니다. 또 다른 방법은 자바 스크립트를 사용하여 페이지를 리디렉션하는 것입니다. Ryan McGeary answer을 인용하려면

// similar behavior as an HTTP redirect 
window.location.replace("http://stackoverflow.com"); 

or 

// similar behavior as clicking on a link 
window.location.href = "http://stackoverflow.com"; 
관련 문제