За последние 24 часа нас посетили 21978 программистов и 1624 робота. Сейчас ищут 2098 программистов ...

Сессия /

Тема в разделе "Прочее", создана пользователем rastamus, 18 авг 2014.

  1. rastamus

    rastamus Новичок

    С нами с:
    18 авг 2014
    Сообщения:
    3
    Симпатии:
    0
    На форумах вообще не бываю, это наверное второй в моей жизни) Бегло пробежался не нашел подобной головоломки... Уже 5й день умираю. В общем суть проблемы.
    Сразу скажу, php я изучаю только недели 2...

    Так вот, создал я регистрацию, простенькую 5 таблиц в mysql, id имя, почта ну и т.д. Все замечательно, работает спокойно и без проблем, но еще не сделал авторизацию через почтовый ящик, дело поправимое, после работаю над авторизацией пользователя, все хорошо, заходит и нет никаких проблем. Но вот беда, начинаю делать сессию, все тут крах, ошибка одна за одной... Стал разбираться, смотрю, ковыряюсь, но все правильно, думал из-за inqlude что что не так вставил, разбиаюсь дальше, но нет же все нормально... После пошел гуглить и что обнаружил простую сессию, работает... Стал дальше ломать голову, но ничего не выходит.

    [​IMG] т.e видим тут простую форму авторизации, заносим почту и пас
    [​IMG] и видим что авторизация прошла и так же разрыв работает. Но вот сама сессия, не пойму. Я понимаю что проблема в заголовке, но куда бы я сессию не ставил бы, она не работает кроме главной страницы и на главной тоже ошибка вот такая вот...
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    =) Ну и видать фигово стал разбираться и смотреть. Ты ошибку-то переведи.
     
  3. rastamus

    rastamus Новичок

    С нами с:
    18 авг 2014
    Сообщения:
    3
    Симпатии:
    0
    ну я так понимаю код сессии я должен перенести в index.php? или опять мимо?)
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    все куки и прочие заголовки должны быть отправлены ДО вывода. Соотв надо либо всё тащить вверх, либо заюзать ob_start()
     
  5. rastamus

    rastamus Новичок

    С нами с:
    18 авг 2014
    Сообщения:
    3
    Симпатии:
    0
    а прокатит если я например создам session.php и через <?php include ("session.php") ?> буду вставлять в заголовок, или нет и идти учить учебник?))
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Не важно как. Важно где.
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    Друг, это основа основ )))
    "Заголовки" (headers) это не просто верх страницы. Это специальные строки, которые посылаются с каждым запросом HTTP и каждым ответом HTTP. Заголовки это не часть текста страницы! Это типа билета, без которого страница не будет доставлена и правильно обработана.

    Даже если ты специально не делаешь ничего с заголовками, они всё равно есть и они посылаются ПЕРЕД твоим текстом. Всегда!

    Так вот, сессия требует установки куки, а куки это особый случай заголовка (который блеать посылается перед любым текстом), хотя ты его явно и не прописал. Вызвал session_start() — неявно вызвал вывод заговолка. А если уже выведен какой-то текст, то заголовок НЕ СРАБОТАЕТ. Про это тебе и пишет ошибку.

    Делать в начале скрипта
    Код (PHP):
    1. include 'мои_обязательные_действия_до_первого_вывода.php';
    это нормально. Там может быть и session_start() и myslqi_connect() и какой-то анализ кук и сессионных переменных. Это благо :)
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    ob_start тебе в помощь, юный падаван.