2012-06-01 83 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頭:

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

使用<meta>刷新:

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

使用JavaScript:

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

最好是使用這三種的組合,也向禁用了這些重定向的用戶顯示一條消息技術帶有一個鏈接,允許他們手動點擊。

+0

謝謝!工作很棒!我會接受,當它讓我。 –

3

由於輸出已經發生,您不能執行HTTP標頭重定向。相反,你應該建立一個元刷新,將用戶重定向到HTML文檔的<head>

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

表單正在對自己定位。用''做js重定向的另一種方法是什麼?謝謝! –

2

PHP是一個服務器端語言,這是之前顯示給用戶的內容執行。

這是在頁面呈現後必須發生的事情,所以是的Javascript將是一個更好的解決方案。