это происходит только в Chrome
Кто-нибудь когда-либо испытывал сессии PHP, сохраняя функциональное поведение в переменных? Я создал следующий скрипт:
<?php session_start(); $_SESSION['count'] = (isset($_SESSION['count'])) ? $_SESSION['count'] + 1 : 0; echo $_SESSION['count']; ?>
Вы могли бы подумать, что это отразится на 0, 1, 2, 3 и т. Д. При каждой загрузке страницы. Тем не менее, я получаю 1, 3, 5, 7 и так далее. Я узнал, что по какой-то причине $ _SESSION ['count'] действует так, как будто его приростное поведение сохраняется в переменной. Причина, по которой, по-видимому, увеличивается на два при каждой загрузке страницы, заключается в том, что, когда вызывается $ _SESSION ['count'], она автоматически увеличивается на единицу. Чтобы сделать это ясно, следующий скрипт будет выводить и более высокий номер при каждой загрузке страницы.
<?php session_start(); echo $_SESSION['count']; ?>
Это будет отражать все $ _SESSION ['count'], а затем $ _SESSION ['count'] + 1 для каждой загрузки страницы. Я попытался отключить сеанс, очистить переменные $ _SESSION и создать новые файлы в разных каталогах с тем же скриптом. Я также пробовал это на http://codepad.viper-7.com/ , и он работает правильно. У кого-нибудь есть идея, почему это произойдет? Сегодня я испытал подобное поведение при установке переменной сеанса на случайное число. При каждой загрузке страницы я получаю новое случайное число, просто повторяя эту переменную. Когда я сериализую или var_dump переменную, она просто возвращает строковое значение.
Это то, что я использовал для отмены сеанса:
$_SESSION = array(); session_unset(); session_destroy();
Я пробовал сценарий в нескольких браузерах. IE и Firefox правильно увеличиваются на 1; однако Chrome увеличивается на 2. Любая идея, почему браузер может повлиять на это?
EDIT: если я создаю новый скрипт и изменяю переменную, он работает правильно. Я заметил, что всякий раз, когда мне нужен этот скрипт из index.php, так что index.php просто имеет, я снова начинаю эту проблему. Итак, что-то происходит с index.php. Может ли быть проблема с моей .htaccess загрузкой страницы более одного раза? Вот:
Мои параметры .htaccess + FollowSymLinks
RewriteEngine on RewriteBase / RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} DirectoryIndex /index.php FallbackResource /index.php #Allow cross domain AJAX Header set Access-Control-Allow-Origin * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
ИЗМЕНИТЬ СНОВА: По запросу пользователя2086860 в комментариях я собираюсь запустить полный поток кода.
Во-первых, я создаю скрипт со следующим кодом:
<?php session_start(); $_SESSION['counter'] = (isset($_SESSION['counter'])) ? $_SESSION['counter'] + 1 : 0; echo $_SESSION['counter']; ?>
Этот код сам работает, как и ожидалось, печать 0, 1, 2, 3 и т. Д.
Теперь, если мне нужен этот скрипт через мой index.php, вот так:
<?php require 'test6.php'; ?>
Числа начинают увеличиваться на 2, а не на 1. Это вызывает необходимость в моем index.php, что вызывает проблему. Он также закручивает мой файл сценария, так что доступ к test6.php теперь теперь увеличивается на 2 вместо 1. Вы можете увидеть его в действии здесь:
удаленный URL-адрес удален
Просто я понял, что код выше всего моего кода . В index.php и test6.php больше ничего не содержится. Это происходит только в Chrome. Firefox и Internet Explorer работают правильно, увеличивая на 1.
Chrome (и, по-видимому, другие браузеры) искал значок, или изображение, которое появляется рядом с заголовком страницы. Как только я добавил изображение на мою страницу следующим образом:
<!DOCTYPE html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="icon" type="image/png" href="http://img.ruphp.com/php/icon.png"> </head>
Это сработало. Спасибо @ dev-null-dweller за это!