2011-09-19 129 views
1

我想這樣的事情:PHP:瀏覽器返回一個頁面

<?php 
if($something) 
    header('Location:javascript:history.go(-2)'); 
?> 

header('Location:javascript:history.go(-2)');不起作用。任何替代品?

我不知道用戶剛在上的頁面,所以我無法硬編碼該網址。

回答

6

從您的角度來看,我認爲你可能會尋找這樣的事情:

<html><head></head><body> 
<?php 
if($something){ 
?> 
<script type="text/javascript"> 
window.history.go(-2); 
</script> 
<?php 
} 
?> 
</body></html> 
+0

謝謝,這是有效的。太糟糕了,我得到了「再次發送發佈數據?」瀏覽器再次提示 – dukevin

+0

沒問題,我想你的網頁中AJAX的組合可能會繞過提示。例如,瀏覽器歷史記錄指向一個GET請求,爲了簡化示例,該請求以#page-bla&postvars結尾。然後你可以加載頁面掃描window.location.hashname然後應該包含#page-bla&postvars。如果您知道字符串中存在「postvars」,您可以發佈您的ajax查詢,並對結果進行處理。這樣你就沒有提示。 – dizas

2

您不能在Location HTTP標頭中使用javascript:僞協議。事實上,你真的不應該使用它。

相反,發送整個URL到你想要的用戶回到通過Location HTTP標頭(如果你能)你可以呼應頁history.back()雖然我非常不鼓勵你做

作爲一個附註,總是在exit之後發送Location HTTP頭。用戶代理不必遵循它。

3

只要他們通過一個鏈接到了那裏,你可以使用

header("Location: " . $_SERVER['HTTP_REFERER']); 
+1

可能希望用'isset()包裝它並確保它不是空字符串。 – alex

+0

良好的電話@Alex – Gricey

+1

這將如何工作回去2頁 – dukevin

0

根據您的問題。你可以在任何地方使用PHP腳本以下代碼..

代碼:

<?php 

    if($something){ 
     echo "<script>window.history.back()</script>"; 
     } 
    ?> 
相關問題