我有一个我无法理解的问题。
仅在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");
}
正常输入页面时一切正常。当重新加载回声“测试!”没有运行,但在文件中出现两个条目“什么?!”。只有这个函数输出到该文件。
答案 0 :(得分:0)
经过一周的战斗和一天的等待帮助,最后,我找到了答案。
Opera每次刷新,都会创建一个新的不可见会话,这不会影响主会话,但会话相关功能会失去对正确会话的访问权限,并且只有刷新时才会有新会话。 session_save_path中的文件数随着每次重新加载而增加。这是一个浏览器问题。
有关于此的信息:http://www.blog.paranoidpenguin.net/2011/03/opera-11-the-php-session-bug/