2012-01-05 68 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 
?>