Opera 11.50文件写在页面重载问题和cookies,php会话错误

时间:2014-01-25 03:31:55

标签: php cookies opera fputs

我有一个我无法理解的问题。

仅在Opera 11.50浏览器上出现此问题。我只是写入文件功能。 fopen, LOCK_EX, fputs, LOCK_UN, fclose

当我正常打开页面时,一切正常。但是当我重新加载页面时,字符串会多次写入文件(2,有时是3)。我检查了, 函数只触发一次,echo返回正确的字符串。

同样在刷新时,Opera会忽略php会话变量和cookie。我当然使用缓冲区 在会议开始之前。

对于任何其他浏览器,不会发生此问题。

我检查了Cookie和浏览器设置。还重新安装了浏览器。上  第二台装有新下载并安装了Opera 11.50的PC是同样的问题。

有什么想法吗?

ps:我读过this相关主题,但我没有找到问题的答案。

有一些代码:

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");
}

正常输入页面时一切正常。当重新加载回声“测试!”没有运行,但在文件中出现两个条目“什么?!”。只有这个函数输出到该文件。

1 个答案:

答案 0 :(得分:0)

经过一周的战斗和一天的等待帮助,最后,我找到了答案。

Opera每次刷新,都会创建一个新的不可见会话,这不会影响主会话,但会话相关功能会失去对正确会话的访问权限,并且只有刷新时才会有新会话。 session_save_path中的文件数随着每次重新加载而增加。这是一个浏览器问题。

有关于此的信息:http://www.blog.paranoidpenguin.net/2011/03/opera-11-the-php-session-bug/