这是一个相当奇怪和烦人的问题,与以下脚本一起转载。火狐刷新第1页,即使在重定向到第2页后
- 假设我们有两页:
script.php
和script.php?second
。 - Page 1创建一些数据库条目并重定向到第2页。
- 在第2页上,用户将看到所述条目的编辑器。
如果页面1由于某种原因在第一次尝试中崩溃并打印一些错误消息,则会发生一个奇怪的事情。如果我们刷新页面1(这次重定向很好),每次连续刷新(页面2)实际上将刷新页面1,并再次重定向到页面2.
在上面的例子中,这将为每个刷新,这是我想通过重定向第2页
<?php
header('Content-type: text/plain');
session_start();
if (!isset($_GET['second'])) {
$_SESSION['counter'] = isset($_SESSION['counter']) ? $_SESSION['counter'] + 1 : 1;
/*$_SESSION['counter'] = 0;
exit('asd');*/
header("Location: {$_SERVER['PHP_SELF']}?second", true, 303);
exit;
}
echo "Counter: {$_SESSION['counter']}";
要尝试上述完整的脚本来规避这个问题,先用注释代码完整运行它,然后通过启用注释代码。
我试过301,302和303重定向。有人知道为什么会发生这种情况吗?
正确的(然后找出那是什么,让我们知道!) - 从PHP在线手册,isset“确定是否一个变量被设置与不是NULL“,所以你需要给第二个值。 – ronaldosantana 2010-05-11 22:30:56
?第二个作品,那不是问题:)第二个设置$ _GET ['second']为空字符串。 – Znarkus 2010-05-12 07:38:00