Php Firefox刷新第1页,甚至在重定向到第2页之后

Php Firefox刷新第1页,甚至在重定向到第2页之后,php,redirect,Php,Redirect,这是一个非常奇怪和恼人的问题,下面的脚本会重现这个问题 假设我们有两个页面:script.php和script.php?第二个。 第1页创建一些数据库条目并重定向到第2页。 在第2页上,向用户展示了所述条目的编辑器。 如果第1页由于某种原因在第一次尝试时崩溃,并打印一些错误消息,则会发生奇怪的事情。如果我们刷新第1页,并且这次重定向很好,那么每次连续刷新第2页都会刷新第1页,然后再次重定向到第2页 <?php header('Content-type: text/plain'); se

这是一个非常奇怪和恼人的问题,下面的脚本会重现这个问题

假设我们有两个页面:script.php和script.php?第二个。 第1页创建一些数据库条目并重定向到第2页。 在第2页上,向用户展示了所述条目的编辑器。 如果第1页由于某种原因在第一次尝试时崩溃,并打印一些错误消息,则会发生奇怪的事情。如果我们刷新第1页,并且这次重定向很好,那么每次连续刷新第2页都会刷新第1页,然后再次重定向到第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']}";
在上面的示例中,这将为每次刷新创建新的数据库条目,这是我希望通过重定向到第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重定向。有人知道为什么会发生这种情况吗?

您正在检查get变量second是否已设置。但您尚未在重定向上设置它

试一试

发件人:

我认为您正在浏览器中看到缓存的重定向,因为您正在使用永久重定向


请尝试状态代码307,或者完全忽略该参数以使用默认值,然后找出它是什么,并让我们知道

正确-从PHP在线手册中,isset确定变量是否已设置且不为空,因此您需要给second一个值。?second起作用,这不是问题:?second将$\u GET['second']设置为空字符串。
   10.3  Redirection 3xx .............................................61
   10.3.1   300 Multiple Choices .....................................61
   10.3.2   301 Moved Permanently ....................................62
   10.3.3   302 Found ................................................62
   10.3.4   303 See Other ............................................63
   10.3.5   304 Not Modified .........................................63
   10.3.6   305 Use Proxy ............................................64
   10.3.7   306 (Unused) .............................................64
   10.3.8   307 Temporary Redirect ...................................65