2012-06-01 4 views
0

PHP에서 코드 블록의 실행을 지연시킬 수 있습니까?코드 실행을 지연시키는 방법은 무엇입니까?

if ($qry->execute($leads)) { 
    echo'<div class="note success">' . 
      $_POST["first_name"] . ', Your entry was successful! 
     </div>'; 

     // Set up email params 

이 코드는 "성공적인"메시지를 표시 한 다음 사용자에게 전자 메일을 보냅니다. 메시지를 표시 한 후 사용자를 리디렉션하려고합니다.

PHP로 가능합니까? JavaScript를 사용해야합니까?

감사합니다.

+0

언제 또는 얼마나 지연 시키나요? –

+0

약 10 초 –

+0

웹 페이지가 사용자에게 표시되기 전에 PHP가 실행됩니다. 따라서 10 초 동안 공백 페이지를 표시하고 싶지 않으면 Javascript/Headers를 사용해야합니다. – pikzen

답변

13

PHP 코드의 실행을 지연 시키려면 sleep 함수를 사용할 수 있습니다. 그러나 클라이언트의 리디렉션을 지연하려는 것으로 보입니다. JavaScript, <meta> 새로 고침 및 Refresh 헤더를 사용하여이 작업을 수행 할 수 있습니다.

Refresh 헤더를 사용 :이 세 가지의 조합을 사용하는

setTimeout(function(){ 
location.replace("/myurl"); 
},«timeout in milliseconds»); 

최고입니다, 또한 : 자바 스크립트를 사용

<meta http-equiv="refresh" content="«timeout in seconds»; URL=http://example.com/myurl"> 

:

header('Refresh: «timeout in seconds»; URL=http://example.com/myurl'); 

<meta> 새로 고침을 사용하여 이러한 리디렉션을 사용 중지 한 사용자에게 메시지 표시 기술을 직접 클릭 할 수있는 링크가 있습니다.

+0

감사! 잘 했어! 나를 용납 할 때 받아 들일거야. –

3

출력이 이미 발생 했으므로 HTTP 헤더 리디렉션을 수행 할 수 없습니다. 대신, 당신은 당신의 HTML 문서의 <head>에 사용자를 리디렉션하는 메타 새로 고침을 설정해야합니다 :

<meta http-equiv="refresh" content="10;url=http://www.example.com/newpage.php" /> 
+0

양식 자체가 존재합니다. ' '을 사용하여 리디렉션을 수행하는 또 다른 방법은 무엇입니까? 감사! –

2

PHP 아무것도가 사용자에게 표시되기 전에 실행되는 서버 측 언어입니다.

이것은 페이지가 렌더링 된 후에 발생해야 할 것이므로 예 자바 스크립트가 더 나은 해결책이 될 것입니다.

관련 문제