0

開発中の私のウェブサイトに奇妙な問題があります。
ログインすると、ユーザーは使用許諾契約を読むためにリダイレクトされます。Iと呼ばれるこのページでは、条件付きで、ユーザーがログインしている場合はterms.php呼び出されるページにユーザーをリダイレクトする確認ボタンを表示します。agreed.phpregister.php

奇妙なのは Firefox だけです (firebug がインストールされています)。
ログインすると、terms.phpのフォームが表示されaction="register.php" ます。の代わりにagreed.php、私が行ったすべてのチェックは、ユーザーがログインしていないことを示しています。もう1つの奇妙なことは、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;
    }
}

login.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

このバグには 2 つの理由が考えられます。セッションとキャッシュ。

FF のみの問題であると確信している場合は、Cookie を削除し、ブラウザのキャッシュをクリアしてください。

これで問題が解決しない場合は、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 に答える