2015-09-26 61 views
0

我有一個表單,第一個按鈕發回到表單;第二個按鈕發佈到另一個網站的表單;第三個按鈕在我的網站上發佈到另一個表單。使用PHP會話會導致頁面從其他站點返回時從緩存過期

我想通過會話將一個變量從form1.php傳遞給form2.php。問題是,如果我點擊第二個按鈕,然後點擊「返回」返回到我的網站,瀏覽器會說該頁面不在緩存中,我必須重新加載它。當然,如果我將兩個呼叫註釋到session_start,我會在離開時回到我的頁面。

我在做什麼錯?見下面的代碼。

form1.php

<?php 
    session_start(); 
?> 

<html> 
    <head></head> 

<body> 

<form id="form1" action="form1.php" method="post"> 
<! -- various controls --> 
    <input type="submit" onclick="form1.action='form1.php';" /> 
    <input type="submit" onclick="form1.action='http://server.anotherdomain/form';" /> 
    <input type="submit" onclick="form1.action='form2.php'; return true;" /> 
</form> 

</body> 
</html> 

form2.php

<?php 
    session_start(); 
    $form1Var = $_SESSION["form1Var"]; 
    /* etc. */ 
?> 
<html> 
<head></head> 

<body> 

<form action="form2.php" method="post"> 
    <input type="hidden" value="<?php echo $form1Var?>" /> 
</form> 

</body> 
</html> 
+0

「form2.php」上的'submit'字段在哪裏? – user5173426

+0

這不太關於PHP,更多關於如何通過按下瀏覽器上的後退按鈕來使緩存無效。你應該修改你的問題。 – Zsw

+0

@Zsw:你要我取消這個問題,問另一個,然後你會回答它?好。我可以問一個新的問題,題目是「如何使瀏覽器後退按鈕無效緩存」,但我該如何撤銷這個問題? –

回答

0

的解決方法是調用在session_start前調用string session_cache_limiter ([ string $cache_limiter ])與$ cache_limiter一個適當的值。我正在使用「private_no_expire」,它確保Expire頭永遠不會發送到瀏覽器。

相關問題