| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Проблема с сессиями |
| Автор: Gold Dragon 4.9.2012, 11:43 | ||||
| Помогите разобраться с сессиями... У меня где-то в коде перед session_start() есть вывод html и соответственно выводится: "A session had already been started - ignoring session_start()".. Есть одна точна входа, что-то типа такого
Попробовал всё это дело закинуть в буффер, как-то так
Но проблема не исчезла.. Что где не так? |
| Автор: gta4kv 4.9.2012, 12:09 |
| Сделай session_start до вывода html... |
| Автор: Gold Dragon 4.9.2012, 12:12 |
| не получится.. это CMS и там сессии стартуют когда нужно в отдельных компонентах :( На данном этапе всё переделывать очень накладно |
| Автор: Gold Dragon 4.9.2012, 12:47 | ||
Однозначно с этим нужно что-то делать, но не на этом этапе.. А при данных условиях можно найти какой-нибудь выход? |
| Автор: Sanchezzz 4.9.2012, 12:58 |
| смотреть по этапно файл запуска и до ошибки возможно где то файл с BOM символом в начале файла. Сори не так прочитал вопрос и понял другую суть.... мне нужно подумать.... |
| Автор: Sanchezzz 4.9.2012, 14:15 | ||
| Я так понимаю вам не нравится что он ругается на то что уже объявлено Первое нужен общий ob_start() до вывода всего на экран Второе либо скрываем все ошибки нафиг или пишем костыль исключения грубый вариант сессия в любом случаи стартанет просто выводит вам сообщения что текущая операция не может быть выполнена так как был уже объявлен вызов session_start(); По хорошему это нужно проверку вставить если strlen( session_id() ) < 1 то session_start(); во все места где session_start(); есть прям тупо поиск заменой Грубый пример на скорую руку.
Как видим сессия стартует и туда что то пишется а ошибок нету. Надеюсь я правильно понял суть вашей проблемы , заранее извиняюсь. Я бы выбрал вариант с рефакторингом кода и проверки на наличии старта сессии. |
| Автор: Gold Dragon 4.9.2012, 14:34 | ||||
Вот только поясни ещё чуть-чуть... У меня ошибка в том что до вызова сессии есть вывод... Я пробовал поместить всё в буфер, но ошибка всё равно есть. Никак не могу понять почему так.. т.е. алгоритм такой
Где ошибка? или всё равно будет ошибка? |
| Автор: Sanchezzz 4.9.2012, 14:39 |
| если ошибка насчет вывода до <? ob_start() то значит есть BOM символ перед <? ob_start() или пробел в начале строки сохраните файл без BOM |
| Автор: Gold Dragon 4.9.2012, 14:51 |
| Это практически не возможно... уж очень много файлов... Надеюсь что проблема именно в этом. Алгоритм вроде правильный.. Ну да ладно, вопрос решённый будем считать |