2012-01-05 37 views
1

我在index.php文件下面的代碼(簡化):

<?php 
    print_r($_GET); 
    if ($_GET['f'] == "activate") { 
    //do stuff 
    } 

    if ($_GET['f'] == "disable") { 
    //do stuff 
    } 
?> 

,並進一步下跌的一頁,一些HTML:

<tr> 
<td style='font-size: 0.9em;'>[email protected]</td> 
<td style='font-size: 0.75em;'><span style="color: #00AF28;">Active</span></td><td style='font-size: 0.75em;'><a href="?f=disable&[email protected]">Disable</a></td> 
</tr> 

的兩個超鏈接將瀏覽器指向URL index.php?f=disable&[email protected]index.php?f=disable&[email protected]

在點擊超鏈接(和指導瀏覽器index.php?f=disable&[email protected])的print_r($_GET)結果是:

Array ([f] => disable [id] => [email protected]) 

然而, '如果' 聲明:

if ($_GET['f'] == "disable") { 
    //do stuff 
} 

不執行,直到我刷新頁面,或按地址欄上的回車鍵。

我在OSX上使用Chrome 16,使用PHP5。

非常感謝

+0

你能舉一個這樣的現場例子嗎?這聽起來很奇怪。 – 2012-01-05 10:34:42

+0

確定if語句未執行?你有沒有用簡單的回聲或從上面的print_r來試用它? – Armin 2012-01-05 10:36:29

+0

問題:通過$ _GET參數發送「禁用」或「激活」命令是否安全? – 2012-01-05 10:37:12

回答

0

嘗試禁用緩存。您可以通過向瀏覽器發送一些http頭來完成此操作。這裏有一個例子來自php.net

<?php 
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
?>