Вопрос такой. Не работали сессии на сайте. Решил сделать что-то простое, чтобы посмотреть, работает ли оно вообще. В итоге сделал файлик php с 2 строчками кода и залил на хостинг. Вот код (этот пример встречается на разных сайтах) PHP: <? session_start(); if (!isset($_SESSION['counter'])) $_SESSION['counter']=0; echo "Вы обновили эту страницу ".$_SESSION['counter']++." раз. "; echo "<br><a href=".$_SERVER['PHP_SELF'].">обновить"; ?> Ничерта не работает, все время о. Что я делаю не так? На моем сайте сессия сохраняется, и можно вывести сохраненное значение, но после перезагрузки, или перехода на другую страницу исчезает нахрен.
Странно, у меня Ваш код работает. --- Добавлено --- Хоть и закрывающего тега </a> нет --- Добавлено --- Может быть где-то в проекте есть что-то типа "unset ($_SESSION["counter"])"?
Я сделал файлик только с этим кодом. Открыл на телефоне - тоже не работает. Но я не на локальном сервере делал, а сразу на хостинг залил.
На локалке нет возможности проверить. Да и в чем может быть разница, тут 2 строчки кода. В хостинге вряд ли проблема, в браузере тоже вряд ли(т.к. я и на телефоне проверил и на компе) Может что-то еще дописать нужно? Это ппц какое-то(
Нюансов на самом деле может быть много PHP: if (!isset($_SESSION['counter'])) $_SESSION['counter']=0; var_dump($_SESSION); Сделай так и пришли вывод
Там Строка $_SESSION["counter"]++ должна быть, естественно, после проверки. Я хз как там сохранить...
PHP: <?php setcookie ( 'counter', $C = (int)( $_COOKIE['counter'] ?? -1 ) + 1 ); echo "Вы обновили эту страницу {$C} раз.<br><a href = \"{$_SERVER['PHP_SELF']}\">обновить</a>";
начнем с простого phpinfo(); крутим до момента session и читаем чаво там есть и нет .. если там все выключена или переопределено ( что скорей всего именно так) пробуем выставлять через https://php.ru/manual/function.ini-set.html на всякий случай даю вот это https://php.ru/manual/session.configuration.html
Вроде там все включено session Session Support enabled Registered save handlers files user beget memcache memcached redis Registered serializer handlers php_serialize php php_binary wddx Directive Local Value Master Value session.auto_start Off Off session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_httponly Off Off session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 1000000 1000000 session.gc_maxlifetime 28800 28800 session.gc_probability 1 1 session.hash_bits_per_character 4 4 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path /tmp/php_sess /tmp/php_sess session.serialize_handler php php session.upload_progress.cleanup On On session.upload_progress.enabled On On session.upload_progress.freq 1% 1% session.upload_progress.min_freq 1 1 session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS session.upload_progress.prefix upload_progress_ upload_progress_ session.use_cookies On On session.use_only_cookies On On session.use_strict_mode Off Off session.use_trans_sid 0 0
"Гребанные сессии", "тупая машина", "бесполезная железяка" и подобные высказывания, только отдаляют решение проблемы. Машина может быть и тупая, поэтому работает тупо так как ей сказали. Если не ты сказал, то твой провайдер. Закрой для начала тэг </a>. Потом проверь на локалке и если всё работает - обратись в хостеру со словами: "почему у меня работает а у вас нет". Нервничать тут бесполезно. Машина, как и женщина, любит ласку, чистоту и смазку... (с) Это про автомобили, но компьютеры тоже любят ласку и заботливый поиск проблемы с глубокой аналитикой.
Наконец отписал хостер. Говорит дело было в bom символах Заработало https://beget.com/ru/articles/bom_remove
бял .. включи отображение ошибок - после <php добавь ini_set('display_errors', 1); ini_set('error_reporting', E_ALL);