Всем привет! Заголовок не совсем точно передаёт суть проблемы, но более точное объяснение очень длинное. Вот оно... На сайте сессии работаю очень странно. В шапке сайта идет код, который подсчитывает количество обновлений страницы (взят, чтобы освоить азы работы с сессиями). Вот код: Код (PHP): <? if (!isset($_SESSION['counter'])) $_SESSION['counter']=0; echo "Вы обновили эту страницу ".$_SESSION['counter']++." раз. "; echo "<br><a href=".$_SERVER['PHP_SELF'].">обновить"; ?> Вот в шапке он не работает. Пробовал вынести этот код на отдельную страницу, которая загружалась после шапки, как обычная страница сайта. Точно также подсчет обновлений не работает. Вынес вообще этот кусок кода в отдельную страницу, которая загружается без всего (шапки, подвала и тд). Там код работает. И после перехода на основной сайт, на сайте тоже начинает работать. Для меня это полтергейст. Код (PHP): session_start(); - стоит в шапке и отдельно в том файле, где работает. Вот основной сайт, где работает только после танцев с бубном http://cyberstavki.tk/ Вот страница где работает (она же танец с бубном) http://cyberstavki.tk/ses.php Не назвал бы себя продвинутым пхп-программистом (а с сессиями вообще едва знаком), поэтому если еще нужна инфа - предоставлю! UPD: 1. на сайте включен показ ошибок. Никаких ошибок не видно. 2. сейчас структура страницы такова: выполняется session_start();, затем подгружаются шапка, тело и подвал. Заранее благодарен! PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Так и есть! Код (Text): session_start(); идет до того, как вызываются остальные элементы страницы На сайте включен показ ошибок, так что этот косяк бы вылез сразу )
значит не так и есть а где то идет до. Добавлено спустя 22 секунды: и еще 0.0001 % что у тебя что то не то с сервером.
тоже рассматривал такой вариант. для проверки убирал старт сессии или переносил его дальше по коду. в таком случае получал ошибку об использовании сессий до старта сессий. так как сейчас ошибки нет, сделал вывод, что сессия стартуется там где надо В связи с этим вопрос... Чем можно отследить порядок выполнения скрипта, состояние переменных, сессий и т.д.? (а-ля Дебаггер) Добавлено спустя 1 минуту 44 секунды: По серверу... Тоже предполагал (начитавшись форумов, написал в саппорт - ответили, что нет никаких особенностей работы с сессиями, таких жалоб не имели от других, смотреть свой код) Добавлено спустя 1 минуту 38 секунд: Код (Text): ini_set('display_errors',1); error_reporting(E_ALL); Добавлено спустя 1 минуту 50 секунд: Вот это сложновато... В коде уже много файлов...
Спасибо всем за помощь! Вроде бы нашел решение. Оно очевидно. И я даже предполагал, что собака порылась где-то здесь, но не думал, что всё прям так. В общем решение: Файл index.php Код (Text): <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?session_start();?> //потом грузим шапку //потом грузим тело //потом грузим подвал Перенес старт сессии В САМОЕ НАЧАЛО. Получилось: Файл index.php Код (Text): <?session_start();?> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //потом грузим шапку //потом грузим тело //потом грузим подвал Таким образом решение оказалось тем самым, о котором пишут везде, где заходит разговор о сессиях: "Стартовать сессии в самом начале". Но я не думал, что прям настолько. У меня вроде и до этого сессии стартовали до того, как что-то выполнялось. Может ли кто-нибудь пояснить сей момент? PS: Еще раз всем большое спасибо!
не до выполнения кода, сессии должны быть запущены до передачи заголовков вот тут подробно расписано.http://phpfaq.ru/newbie/headers
Вот огромное спасибо! Теперь всё встало на свои места! Добавлено спустя 3 минуты 5 секунд: зачетная статья! Всё просто, доступно, еще и с юмором!