Значится так - начнем с азов! ;) В ХТТП хедеры идут впереди текста ответа. Сессии часто реализуются через куки, которые как раз прописываются в хедерах. Вызов session_start модифицирует хедеры. И если где-то по пхп-коду сделать вывод любого текста, а потом дергнуть session_start то происходит коллизия - уже пошло тело ответа броузеру, а старт сессии требует модифицировать хедеры, которые уже ушли. Ну и та ошибка - это предупреждение, что так делать нельзя.
Короче - поставь вызов session_start в самое начало своего пхп-кода и должно быть тебе счастье! :) Еще - не обязательно дело в явном выводе через echo или print до старта сессии. Это может быть просто пробел в начале файла, перед тегом
Ага. Но если заблокировать message, это тоже решение? Ну, в смысле того, что может он правильную вещь говорит, которая может на дальнейшей работе отразиться, а я ему через ini, мол "пошел ты..." :)
Кстати, РНР для меня язык новый, я его по книжке учу. А ты когда про хидеры вчерась высказался, я подумал, что недочитал чего-то. Перерыл книжку снова - ни фига. Может дашь какой линк, где прочесть про это? И почему хидеры сами сессию запускают? Я не понял тебя вчера.
Спасибо заранее.
php_manual курить надо - будет ЩАСТЬЕ :)
Просто достаточно знать, что session_start, set_cookie и подобное должно выполняться до того, как начнётся какой-нибудь вывод.
В колонках играет: Ozzy Osbourne - Breaking All The Rules
Где почитать честно говоря не подскажу - я это по разным статьям нашел, по ману ПХП-шному и тихноькому наступанию на грабли ;)
Насчет подавить это сообщение и не париться - вряд ли выйдет что-то путнее. Ругается оно правильно и вообще в мане есть такие слова на эту функецию:
Note: If you are using cookie-based sessions, you must call session_start() before anything is outputted to the browser.
Т.е. другими словами, но о том же что уже и говорилось здесь - не стоит ничего выводить до вызова session_start().
Насчет хедеров - они сессию не стартуют. Через хедер приходит уведомление броузеру про идентификатор сессии - это если сессия работает через куки (в хедерах есть поле для куков и вот туда этот идентификатор сессионный записывается).
Вообще я б на твоем месте пока не замарачивался на все эти чепуховины и сделал простую вещь - поставил вызов session_start() в самом начале твоего файла :)
Кстати, у меня еще один вопрос возник. Если в скрипте присутствует Sessin_start() и не присутствует session_destroy(), что таже самая сессия будет распространяться и на последующие вызываемые скрипты (страницы)? Я понял тьак, что session_destroy()нужно вызывать только в случае Log out. Это правильно?
Спасибо.