2010-03-02 58 views

回答

0

您可以撥打header()在一個循環中,但與位置頭,瀏覽器將只遵循一個。

location:<url>告訴瀏覽器轉到指定的URL。它被稱爲301重定向。爲什麼你會把它稱爲循環,我不知道。

+0

因爲這個腳本已經存在,我不想在函數中發送它 –

3

沒有。 header("Location: ...")應該將瀏覽器重定向到其他頁面,因此只有其中一個呼叫會生效。

你想做什麼?

1

你的建議應該可以正常工作,但不會如你所期望的那樣。 header()函數只是在腳本內容(您修改http頭)之前在單個批處理中向瀏覽器發送信息。所以當腳本執行完畢後,瀏覽器會轉到指定的頁面,因此只有最後一次調用header('Location...纔會有效果,並且只有在php腳本執行完畢後纔會發生這種效果。

一個很好的方法來做什麼我認爲你想要做的是將'myscript.php'的功能封裝到一個函數中。

include 'myscript.php'; 
while (...) 
{ 
    ... 
    myscriptFunction(); 
    ... 
} 
... 
+0

是的,我知道但是這個腳本已經被使用了,我應該修改我的代碼。 我將不得不創建一個克隆並將其轉換爲你建議的 –

0

不是,而是將它作爲請求參數傳遞,假設您嘗試重定向到self。例如。

<?php 

$i = isset($_GET['i']) ? intval($_GET['i']) : 10; // Or whatever loop count you'd like to have. 

if ($i-- > 0) { 
    header("Location:myscript.php?i=" . $i); 
} 

?> 

然而,我強烈質疑這種意義上/值:)

更新,你只是想包括循環中的PHP腳本/模板?然後改用include()

while (...) 
    include('myscript.php'); 
} 

如果它包含全局代碼,那麼它將被多次評估和執行。

+0

請參閱說明... –

+0

有人建議我這樣: register_shutdown_function('doRedirect');函數doRedirect(){ header('Location:url'); 退出; } –

1

您可以隨時include從另一個腳本來執行它的邏輯:

include('myscript.php'); 

原則上,這應該不需要任何重構代碼myscript.php。預先警告 - myscript.php和包含腳本將共享相同的全局命名空間,這可能會引入錯誤。 (例如,如果容器輸出HTML和myscript調用session_start()將會生成警告)。

+0

情況就是這樣...... –