-1

理解できない問題があります。

この問題は、Opera 11.50 ブラウザーでのみ発生します。ファイル関数に書き込むだけです。 fopen, LOCK_EX, fputs, LOCK_UN, fclose.

通常ページを開くと、すべて問題ありません。しかし、ページをリロードすると、文字列がファイルに複数回 (2 回、場合によっては 3 回) 書き込まれます。私がチェックしたところ、関数は一度だけ起動され、エコーは正しい文字列を返します。

また、更新時に、Opera は php セッション変数と Cookie を無視します。もちろん、セッション開始前にバッファを使用します。

他のブラウザでは、この問題は発生しません。

Cookieとブラウザの設定を確認しました。ブラウザも再インストール。新たにダウンロードしてインストールした Opera 11.50 を搭載した 2 台目の PC でも同じ問題が発生します。

何か案は?

ps:この関連トピックを読みましたが、私の問題に対する答えが見つかりませんでした。

いくつかのコードがあります:

if (!isset($_SESSION['foo']) && ($check4 === false) && !isset($_COOKIE['bar'])) {

     echo "test!";

     $fileHandler = fopen(MASTER_PATH . "/data/logs/loger.txt", "ab");
     flock($fileHandler, LOCK_EX);
     fputs($fileHandler, "What?!");
     flock($fileHandler, LOCK_UN);
     fclose($fileHandler);

     $_SESSION['foo'] = true;
     $check4 = true;
     setcookie("bar");
}

通常、ページに入ると、すべて問題ありません。リロード時に「test!」とエコーします。は実行されませんが、ファイルには "What?!" という 2 つのエントリが表示されます。この関数のみがそのファイルに出力されます。

4

1 に答える 1

0

1 週間格闘し、1 日助けを待った後、最終的に答えを見つけました。

更新のたびにOperaは、メインセッションに影響を与えない新しい非表示のセッションを作成しましたが、セッション依存の機能は正しいセッションへのアクセスを失い、更新の時だけ新しいセッションを持っています。session_save_path 内のファイル数は、リロードごとに増加しました。ブラウザの問題です。

これに関する情報があります: http://www.blog.paranoidpenguin.net/2011/03/opera-11-the-php-session-bug/

于 2014-01-26T03:09:36.530 に答える