Файл Opera 11.50 записывает проблему перезагрузки страницы и файлы cookie, ошибки сеанса php

У меня проблема, которую я не могу понять.

Проблема возникает только в браузере Opera 11.50. У меня есть просто функция записи в файл. fopen, LOCK_EX, fputs, LOCK_UN, fclose.

Когда я нормально открываю страницы, все ок. Но когда я перезагружаю страницу, строка записывается в файл несколько раз (2, иногда 3). Я проверил, функция запускается только один раз, и эхо возвращает правильную строку.

Также при обновлении Opera игнорирует переменную сеанса php и файлы cookie. Конечно, я использую буфер перед началом сеанса.

Для любого другого браузера такой проблемы не возникает.

Я проверил куки и настройки браузера. Так же переустанавливал браузер. На втором ПК со свеже скачанной и установленной оперой 11.50 такая же проблема.

Есть идеи?

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

При обычном входе на страницу все в порядке. При перезагрузке эхо "тест!" не запускается, но в файле появляются две записи "Что?!". Только эта функция имеет вывод в этот файл.


person user3234164    schedule 25.01.2014    source источник
comment
Наши волшебные хрустальные шары, которые позволили бы нам читать ваш экран через плечо, случайно оказались в магазине. Поскольку мы не можем проверить ваш код, нам придется обвинить в вашей проблеме инопланетян. Их материнский корабль находится на орбите, и его сигналы мешают вашему компьютеру.   -  person Marc B    schedule 25.01.2014
comment
Бьюсь об заклад, именно поэтому это влияет и на меня. Должно быть, я оставил свою алюминиевую шляпу на борту материнского корабля. Будем надеяться, что у него кончился бензин, и я смогу его догнать. @MarcB   -  person Funk Forty Niner    schedule 25.01.2014
comment
Почему вы сосредоточились на трехлетней версии Opera? Люди ушли очень давно. Вероятность того, что кто-то действительно посетит ваш сайт с помощью этой версии браузера, вероятно, будет где-то около 1 из 7 миллиардов или около того.   -  person Sverri M. Olsen    schedule 25.01.2014
comment
Проблема возникает на всех версиях Opera равных и ниже 12. Это последние версии с движком presto и до сих пор популярны. Но главная причина в следующем: Я должен знать, почему это происходит?! Или я сойду с ума. :)   -  person user3234164    schedule 25.01.2014


Ответы (1)


После недели борьбы и одного дня ожидания помощи, в конце концов, я нашел ответ.

Opera при каждом обновлении создавала новую невидимую сессию, которая не влияет на основную сессию, но функция, зависящая от сессии, теряла доступ к правильной сессии и создавала новую только на время обновления. Количество файлов в session_save_path увеличивалось с каждой перезагрузкой. Это проблема браузера.

Об этом есть информация: http://www.blog.paranoidpenguin.net/2011/03/opera-11-the-php-session-bug/

person user3234164    schedule 26.01.2014