PHP를 사용하여 페이지 새로 고침


148

PHP를 사용하여 주기적으로 페이지를 새로 고치는 방법은 무엇입니까? PHP로 할 수 없다면 가장 권장되는 시나리오는 무엇입니까?


우리는 동기화 (php 스크립트가 구문 분석되는 동안 새로 고침하려는 상황이 발생했습니다) refrehs (메타 새로 고침이 잘 작동 함) 또는 페이지의 비동기 연속 새로 고침 (자바 스크립트 / ajax와 같은)에 대해 이야기하고 있습니까?
Najzero

답변:


275

PHP로 할 수 있습니다 :

header("Refresh:0");

현재 페이지를 새로 고치고 다른 페이지로 리디렉션해야하는 경우 다음을 사용하십시오.

header("Refresh:0; url=page2.php");

1
새로 고침 은 공식 헤더가 아니지만 Netscape Navigator 이후 많은 브라우저에서 지원됩니다. 즉, 잠재 고객이 지원 브라우저를 사용하는지 테스트해야합니다.
Patanjali

5
0 을 사용하면 특히 페이지에 이미지가있는 경우 서버 및 / 또는 로컬 캐시가 계속 망치게됩니다. 화면에서 주가와 같은 정보 만 업데이트해야하지만 해당 정보를 양식이나 자바 스크립트로 사용하지 않는 경우 정보가 업데이트되는 페이지를 가리키는 iframe 태그를 사용하고 방법에 적절한 지연 시간을가집니다 현재 정보가 있어야 합니다.
Patanjali

1
이로 인해 코드에 "Header already sent"오류가 발생 합니다. 다른 방법이 있습니까?
DBS

해결책은 여기 를 확인 하십시오 . tldr, 사용하기 전에 아무것도 출력 할 수 없습니다header();
adrian

109

PHP 에서는 다음을 사용할 수 있습니다.

$page = $_SERVER['PHP_SELF'];
$sec = "10";
header("Refresh: $sec; url=$page");

또는 JavaScript를 사용하십시오 window.location.reload().


2
Yazana header ( 'Location :')는 사용자를 URL로 리디렉션하는 데 사용되며이를 사용하여 페이지를 새로 고칠 수 없습니다.
Patriks

2
Pratik. 당신은 잘못. 실제로 header ( "refresh :")를 사용하여 페이지를 새로 고칠 수 있습니다
131

6
대기 시간을 선호하지는 않지만 두 가지를 모두 수행 할 수 있습니다.header("Location: ".$_SERVER['PHP_SELF']);
John Magnolia

4
이 솔루션에 대한 참고 사항 : 사이트에서 일종의 훌륭한 라우팅 또는 URL 재 작성 (예 : 기본적으로 거의 모든 프레임 워크) $_SERVER['PHP_SELF']을 구현하는 경우 브라우저에 표시되는 실제 URL이 아니라 실제 스크립트 경로가 제공 될 수 있습니다 . 이 경우 $_SERVER['REQUEST_URI']대신 사용하십시오.
BadHorsie

18

PHP를 사용하여 주기적으로 페이지를 새로 고칠 수 있습니다.

<?php
    header("refresh: 3;");
?>

3 초마다 페이지가 새로 고쳐집니다.



12

PHP 컨텐츠를 새로 고치는 두 가지 방법을 찾았습니다.

1. HTML meta태그 사용하기 :

echo("<meta http-equiv='refresh' content='1'>"); //Refresh by HTTP 'meta'

2. PHP 재생 빈도 사용 :

$delay = 0; // Where 0 is an example of a time delay. You can use 5 for 5 seconds, for example!
header("Refresh: $delay;"); 

2
//Refresh by HTTP META => // Refresh by HTML META또한 위에서 복사 한 답변처럼 보입니다.
php_coder_3809625

11

페이지를 새로 고치는 모든 PHP 방법 외에도 다음 HTML 메타 태그로 페이지가 새로 고쳐집니다.

<meta http-equiv="refresh" content="5">

메타 새로 고침 - "주어진 시간 간격 후에 현재 웹 페이지 또는 프레임을 자동으로 새로 고침"을 참조하십시오.

content값 내에서 시간을 설정할 수 있습니다 .


3
이것은 0 초마다 새로 고쳐질 것입니다-아마도 당신이 가고있는 것이 아닐 것입니다 :)
warren

3
예, 나는이 답변에 대해 언급하고 있습니다 : 항상 개선의 여지가 있습니다. 그리고 당신 말이 맞아, 당신은 content초 단위로 값을 설정할 수 있습니다 -내 의견은 여전히 ​​0 초의 새로 고침이 당신이 가고있는 것이 아니라는 점에 주목할 가치가 있습니다 :)
warren

2
@Mathlight 및 다른 사람들은 지연된 의견에 대해 불평합니다. 앞으로 나아갈 수 있기 때문에, 미래의 독자가 방금 문제를 경험했을 수도 있으며, 답변 / 의견과 함께 지연된 문제와 관련이있을 수도 있습니다.
Patanjali

1
@Mathlight 사람들이 왜 게시물이 오래되어서 댓글을 달 때 가치가 없다고 생각하는지 잘 모르겠습니다. 그 생각을 폐기해야합니다.
Mark Kramer

"if 문에서 빌드" 는 무엇을 의미 합니까?
Peter Mortensen

2

header('Location: .'); Chrome, Firefox, Edge 및 Internet Explorer 11에서 페이지를 새로 고치는 것 같습니다.


그것은 (한 번)해야로서 : php.net/manual/en/function.header.php : 위치 "두 번째 특별한 경우가있다". "헤더뿐만 아니라 그것은 브라우저에이 헤더 다시 보낼뿐만 아니라 그것을 않습니다 반환 201 또는 3xx 상태 코드가 이미 설정되어 있지 않으면 브라우저에 REDIRECT (302) 상태 코드가 있습니다. "
Sz.

그러나 그것은 OP가 요구 한 것이 아닙니다. 나는 나중에 그것을 유감스럽게 생각했기 때문에 여전히 그것을 upvoted했다. 곧 크리스마스입니다! :)
Sz.

1

PHP 에서는 할 수 없습니다 . 페이지가로드되면 PHP가 종료되고 제어 할 수 없게됩니다.

몇 가지 옵션이 있습니다.

  • 사용하다 자바 스크립트
  • 새로 고침 메타 태그를 사용하십시오. <meta http-equiv="refresh" content="5">

새로 고침 메타 태그 가 가장 쉽고 가장 편리 하다고 생각 합니다.


63
다음과 같이 PHP의 헤더 기능을 사용하면 PHP를 사용하여 주기적으로 페이지를 새로 고칠 수 있습니다. header ( "refresh : 3;");
131

1
헤더를 사용하여 PHP에서 페이지를 새로 고칠 수 있습니다. 또한 META REFRESH를 사용하는 것은 SEO에 적합하지 않습니다.
TheCarver

1
나는 이것이 잘못되었다고 생각한다. 항상 방법이있다 : 나는 그가 PHP로 페이지를 새로 고치고 싶다면 PHP의 새로 고침 코드가있는 페이지에 아약스 요청을 보낼 수 있다고 생각한다. 그러나 당신의 대답은 훌륭합니다
Mohammad Kermani

2
잘못된 ! 답을 고쳐주세요 ... 실제로 PHP로 할 수 있습니다
M_R_K

1
이것은 완전히 잘못입니다! 가능한 모든 방법으로. PHP, 헤더 (새로 고침) 및 트리거 된 리디렉션으로 수행 할 수 있습니다. 다른 모든 대답이 더 나은 것 같습니다.
부디 미르 그롬

1

JavaScript를 사용하여 새로 고칠 수 있습니다. 전체 페이지 새로 고침 대신 내용을 div에서 새로 고칠 수 있습니다. 그런 다음 JavaScript를 사용하여 특정 div 만 새로 고칠 수 있으며 전체 페이지 새로 고침보다 빠르게 작동합니다.


2
코드를 포함 시키면이 답변이 좀 더 이해하기 쉬울 수 있습니다.
I.Am.A. Guiy

1

PHP 는 서버 측 언어이므로 PHP로 페이지를 새로 고칠 수는 없지만 페이지를 새로 고치는 가장 좋은 방법은 JavaScript입니다.

location.reload();

방문의 위치를 다시로드 () 메소드 .


1
당신이 원하는대로 Hahahah ok. 이 out => ( wrongDomain.epl.fanxt.com )을 확인하십시오 .로드 된 페이지를 새로 고치도록 지정하지 않았습니다. PHP 코드 실행 중에 새로 고치기로 결정한 경우, PHP는 확실히 새로 고칠 수 있으며 몇 초 후에 새로 고칠지를 선택할 수 있습니다.
모하메드 조 라드

@Ahmad, PHP의 기능으로 생각할 수 없으며 HTML의 기능입니다. 따라서 html 응답 헤더를 설정하여 정렬하고 있습니다. 그리고 이것이 내가 PHP로 할 수 없다고 말한 이유입니다. 또 다른 것은로드 한 후 / 필요한 경우 페이지를 새로 고칠 수 없습니다. 네, 당신이 대답 한대로 몇 초 등으로 설정할 수 있습니다.
패트릭

오 기술. 헤더를 사용하여 특정 이미지를 새로 고칠 수 있다고 생각하십니까? 당신이 거친 PHP를 통해 이미지를 스트리밍하는 경우입니다.
EZFrag

정말 @EZFrag, 잘 모르겠습니다. 어떻게 가능합니까?
Patriks

아 맞습니다. 처음에는 일반 이미지 태그를 시도했습니다. 불운. 그러나 이미지 태그를 iframe 태그 및 voila로 바꿨습니다. 이미지가 자동으로 새로 고쳐집니다. 이것은 내 페이지 상태 이미지 중 일부에 많은 도움이 될 것입니다.
EZFrag

1

다음 meta과 같이 태그를 에코하십시오 .

URL은 새로 고침 후 페이지를 리디렉션해야하는 URL입니다.

echo "<meta http-equiv=\"refresh\" content=\"0;URL=upload.php\">";

그러나 문제는 리디렉션에 관한 것이 아닙니다. 새로 고침에 관한 것입니다.
Peter Mortensen

1

이 메타 태그를 PHP에 추가하면 도움이 될 수 있습니다.

echo '<META HTTP-EQUIV="Refresh" Content="0; URL=' . $location . '">';

3
이 코드 스 니펫은 문제를 해결할 수 있지만 설명을 포함하면 게시물의 품질을 향상시키는 데 실제로 도움이됩니다. 앞으로 독자들에게 질문에 대한 답변을 제공하므로 해당 사람들이 코드 제안의 이유를 모를 수도 있습니다.
DimaSan

그러나 문제는 리디렉션에 관한 것이 아닙니다. 새로 고침에 관한 것입니다.
Peter Mortensen

0

한 가지 방법은 URL 끝에 임의의 숫자를 추가하는 것입니다. 이렇게하면 매번 파일 이름을 바꿀 필요가 없습니다. 예 :

echo "<img src='temp.jpg?r=3892384947438'>"

임의의 숫자가 다르면 브라우저는이를 캐시하지 않지만 웹 서버는이를 무시합니다.


2
페이지를 주기적으로 새로 고치는 방법은 무엇입니까? 다른 답변에 응답하고 있습니까?
Peter Mortensen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.