2012-09-28 12 views
0

이것은 충분히 간단해야하지만 약간의 문제가있는 것 같습니다.PHP로 페이지를 새로 고치는 좋은 방법은 무엇입니까?

세션 변수의 설정 여부에 따라 로그인 페이지와 기본 콘텐츠 페이지 인 색인 페이지가 있습니다.

리디렉션을 처리하기 위해 PHP에서 반향을 일으키는 JavaScript를 사용해 보았지만 시간이 조금 걸립니다. 그래서 헤더 ("location : abc.php")를 사용하도록 전환했습니다. 인덱스 페이지에 대한 문제는 출력이 전송 된 후에도 작동하지 않는다는 것입니다. 또한 메타 태그를 사용하여 페이지를 새로 고쳐야했지만 모든 브라우저에서 작동하지는 않습니다.

이 상황을 처리하는 가장 좋은 방법은 무엇입니까?

미리 감사드립니다.

+0

콘텐츠가 생성 된 후 출력 버퍼링을 사용하여 헤더를 보낼 수 있습니다. – Passerby

+0

대답은 간단합니다. 나에게 그것은 분명합니다. 리디렉션해야하는지 결정하기 전에 출력물을 보내지 마십시오. –

답변

1

그들 중 하나를 사용할 수 있습니다. 그러나 응답을 보낸 후에 header("location: abc.php")이 작동하지 않습니다! 해결 방법은 간단합니다. 출력 버퍼링을 사용하십시오.

<?php 
ob_start() 

//here goes many lines of your wonderful php code blocks 

//now send the header based on your logic 
header("location: abc.php") 

ob_end_flush() 

대한 추가 정보를 원하시면

업데이트를 official docs을 확인하시기 바랍니다 : 당신은 @zerkms의 제안을 고려할 수 있습니다. 자동으로 다른 페이지로 리디렉션해야하는 경우 header() 기능을 사용하여 출력을 보내기 전에 수행하십시오. 그러나 리디렉션하고 있음을 보여주고 싶다면 사용중인 것처럼 javascript를 사용할 수 있습니다! 후자의 경우, 당신은 또한

<meta http-equiv="refresh" content="5;URL='http://example.com/'"> 

ob_start()Meta Refresh이 도움이 될 것입니다 사용할 수 있습니다. 왜냐하면 아마도 페이지에 많은 것을 보여줄 것이고 잠시 리다이렉트 될 것이라고 말할 것입니다. 위의 예에서는 사용자를 example.com으로 5 초 후에 리디렉션합니다.

+1

제안한 해결 방법은 의미가 없습니다. 사용자를 리디렉션하려는 경우 아무 것도 출력 할 이유가 없습니다. 예, 간단합니다. – zerkms

+1

귀하의 포인트가 유효합니다! 그러나 출력이 전송 된 후 작동하지 않는다고 말한 질문을 확인하십시오. – HungryCoder

+0

죄송합니다. 명확하지 않았습니다. 어떻게 다른 페이지로 리다이렉트 시켰는지에 대한 예를 들었을 것입니다.리디렉션하려고하지 않고 같은 페이지를 새로 고칩니다. – cream

1
<?php 
session_start(); 

//all of the php code goes here 

header("location: samepage.php") 

?> 

PHP는 당신의 모든 코드는 브라우저의 최상위 수준 및 에코 명령을 사용하지 않을 있는지 확인 - 대신 에코 명령을 사용하여 - 다른 페이지 상단에서 에코 무언가를 보여주는 끝날 것 더 신뢰할 수있는 변수를 사용하고 필요한 경우 HTML 본문에 변수를 사용하십시오.

-1

이 당신이 원하는 일을합니까이

JAVASCRIPT

function timedRefresh(timeoutPeriod) { 
setTimeout("location.reload(true);",timeoutPeriod); 
} 

HTML

<!--The page will refresh every 5 seconds.--> 
<body onload="timedRefresh(5000)"> 
+0

@HiggsBoson이게 당신이 찾고 있는게 뭐죠? –

+0

이것은 기본적으로 js가 실행되기 전에 전체 페이지가 브라우저로로드되기 때문에 느려집니다. / – cream

0

을 시도 할 수 있습니다?

<?php 
session_start(); 

if ($_SESSION['logged_in']) { 
    header("Location: mainpage.php"); 
    exit(); 
} 

// Display login form 
관련 문제