Я пытаюсь предотвратить простое мошенничество с кликами на моем сайте и создаю ссылки на основе данных о времени сеанса.
Все работает в FF, но в IE информация, которую я храню в сеансе, каким-то образом изменяется.
Когда я загружаю главную страницу, я устанавливаю переменные сеанса следующим образом
session_start();
$_SESSION['time']=time();
Я выкладываю значение сеанса на страницу, поэтому получаю что-то вроде
1275512393.
Когда пользователь нажимает на ссылку, я отправляю запрос ajax, и эта страница возвращает сеанс, который я помещаю в предупреждение.
session_start();
echo $_SESSION['time'];
die();
Предупреждение возвращается
1275512422.
Только в IE возвращается $ _SESSION ['time'], отличный от исходного $ _SESSION ['time']
Не похоже, что это проблема кеширования, поскольку время всегда ОЧЕНЬ близко друг к другу, а второе всегда после первого, но я не уверен.
-------- update - проблема, вызванная JavaScript на Facebook. решения пока нет --------------
Разбирая код для публикации в соответствии с рекомендациями MANCHUCK, я начал задумываться, не вызывает ли этот фрагмент кода Facebook какую-то проблему
FB.ini ({appId: 'myappid', статус: true, cookie: true, xfbml: true});
так что я удалил это и снова запустил страницу, и теперь времена $ _SESSION совпали !!
Итак, я нашел проблему.
Возможно, я как-то подумал, что FB javascript создает сеанс (обратите внимание, что я использую только FB javascript, а не PHP API), который как-то перезаписывает значения моего предыдущего сеанса.
Я отложил нарушающий javascript обратно и попытался изменить имя моего сеанса на $ _SESSION ['mytime'] или $ _SESSION ['time2'], но проблема все еще существовала.
Я пытался использовать другие функции времени, такие как дата ('Ymd G: h: s') или дата ('Ymd G: h: s'). 'Test', но при извлечении $ _SESSION время всегда увеличивается на несколько секунд. со второй страницы.
Я удивлен, что что-то подобное может произойти, и не могу представить, как это возможно, но я возвращался к этому 4 раза сейчас, и каждый раз, когда я вынимаю эту одну строчку Javascript, все работает!
К сожалению, не использовать Facebook Connect на самом деле не вариант для этого проекта.