0

我正在开发的网站有一个奇怪的问题。
登录后,用户将被重定向以阅读许可协议。在这个名为的页面中,terms.php我有条件地显示了一个确认按钮,该按钮将用户重定向到一个页面,agreed.php如果用户已登录,否则:到register.php

奇怪的是只在 Firefox 中(安装了 firebug)。
登录后,terms.php会显示 's 表格action="register.php" !而不是agreed.php, 我所做的所有检查都表明用户未登录。另一个奇怪的事情是,如果我按 F5 刷新,它显示agreed.php!它不会发生在 IE 和 Chrome 中。

知道这可能是什么吗?

function logged_in() {
    return isset($_SESSION['USER_ID']);
}

function redirect_to( $location = NULL) {
    if ($location != NULL) {
        header("Location: {$location}");
        exit;
    }
}

登录.php

if (shouldReadTerms())
    redirect_to("terms.php");

条款.php

    <?php if(logged_in()): ?> 
    <?php if (shouldReadTerms()): ?>
        <form action="agreed.php" method="POST">
    <?php endif; ?>
    <br />
    <br />
    <button <?php if (!shouldReadTerms()) echo 'disabled'; ?>>I Agree </button>
    <?php if (shouldReadTerms()): ?>
        </form>
    <?php endif; ?>
    <br />
    <br />
<?php else: ?>
    <form action="register.php" method="POST">
    <br />
    <br />
    <button>I Agree</button>
    </form>
<?php endif; ?>
4

3 回答 3

2

这个错误可能有两个原因。会话和缓存。

如果你确信问题只在FF为启动删除cookies并清除浏览器缓存。

如果这无助于添加terms.php

header("Cache-Control: no-cache, must-revalidate");

如果这也无济于事,请尝试在授权后的每个步骤中查看会话转储。

于 2012-05-17T10:41:53.537 回答
1

如果在 IE 或 Chrome 中不是问题,您可以尝试

<meta http-equiv="cache-control" content="no-cache">

在该页面的页眉中。

于 2012-05-17T10:07:10.213 回答
0

悲伤但真实:改变:

redirect_to("terms.php");

redirect_to("terms.php?".rand());

问题解决了。虽然不是 100% 肯定为什么。但它现在就像一个魅力

于 2012-05-17T14:17:01.607 回答