Проблема с Session_start();

Тема в разделе "PHP программирование", создана пользователем morti, 25 ноя 2006.

Статус темы:
Закрыта.
  1. morti

    morti Гость

    <?php
    //include script with all functions for this project
    require_once('bookmark_fns.php');

    $email = $_POST['email'];
    $username = $_POST['username'];
    $passwd = $_POST['passwd'];
    $passwd2 = $_POST['passwd2'];

    session_start();
    ?>
    Если так писать то на строчке где находится
    session_start(); выдает ошибку Cannot send session cookie - headers already sent by (output started at D:\Site\localhost\www\bookmark\bookmark_fns.php:12) in
    если же поместить session_start(); в самое начало скрипта
    <?php
    session_start();
    ?>
    то все отработает нормально.
    Как сделать, чтобы эта функция могла отрабатывать
    в середине скрипта. Стоит PHP5. Работаю в PHP Expert Editor
     
  2. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Для: morti
    а какая разница где её ставить?
    просто не выводи на экран ничего до нее и всё.
     
  3. Andrew Stephanoff

    Andrew Stephanoff Гость

    Код (Text):
    @session_start();
     
  4. morti

    morti Гость

    <!--QuoteBegin-Andrew Stephanoff+26:11:2006, 02:34 -->
    <span class="vbquote">(Andrew Stephanoff @ 26:11:2006, 02:34 )</span><!--QuoteEBegin-->Код
    @session_start();
    [snapback]48916" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    А сессия разве запустится?
     
  5. Andrew Stephanoff

    Andrew Stephanoff Гость

    Сорри, показалось, что ты два раза сессию запускаешь.
    Конечно, надо запускать в самом начале.
    @session_start(); помогает в том случае, если ты точно не знаешь, будет ли запущена сессия к данному моменту.
     
  6. tIT

    tIT Гость

    Любые функции, которые отсылают клиенту заголовки надо вызывать ДО вывода какого либо текста. Если такой подход не устраивает, используем буферизацию вывода ob_start().

    Для: Andrew Stephanoff
    Зачем вредные советы давать? @ - источник многих и многих ошибок. Она реально оправдана только тогда, когда зарегистрирован свой обработчик ошибок и не хочется видеть на страницах сообщения об ошибках. И даже в этом случае лучше использовать не @, а просто отключать вывод отладочных сообщений на страницу и включать логирование.
     
  7. s10

    s10 Гость

    2 tIT
    согласен.
    но за все время работы с пхп ни разу не делал вывод через буфер.
    и пока не представляю ситуацию, в которой без него нельзя было бы обойтись.

    а у товарища morti наверное что то на подобии :
    Код (Text):
    <?php
    echo 'превед страна';
    session_start();
    ?>
    :(

    2 morti
    сессию в начало ставь, tIT правильно сказал.
     
  8. Andrew Stephanoff

    Andrew Stephanoff Гость

    Ну это смотря с какой точки зрения смотреть. Вот у меня бывают случаи, когда я точно не знаю, будет ли инициализирована сессия в какой-то момент выполнения программы. Можно поставить проверку, а можно просто написать @session_start(); и ничего страшного не случится. Я же не говорю повсеместно подавлять ошибки.
     
  9. morti

    morti Гость

    Для: s10
    не угадали
    Проблема крылась в лишнем прбобеле ПОСЛЕ скрипта.
     
  10. tIT

    tIT Гость

    <!--QuoteBegin-s10+3:01:2007, 12:42 -->
    <span class="vbquote">(s10 @ 3:01:2007, 12:42 )</span><!--QuoteEBegin-->пока не представляю ситуацию, в которой без него нельзя было бы обойтись.[/quote]
    Постобработка выходного потока. Например, преобразование <a href="{DB_ID: 2100023162}"> на <a href="/news/2006/04/13"> или же финальное преобразование XML во что-либо через XSLT. Можно кучу всего придумать.

    <!--QuoteBegin-Andrew Stephanoff+3:01:2007, 12:59 -->
    <span class="vbquote">(Andrew Stephanoff @ 3:01:2007, 12:59 )</span><!--QuoteEBegin-->Можно поставить проверку, а можно просто написать @session_start(); и ничего страшного не случится.[/quote]
    Потом теоретически могут начаться танцы с бубнами (-;
    В своем-то коде надо знать, что сработает, а что нет. Код растет - зато вероятность лечения шаманством сокращается.
    В одном из последних проектов решил разнообразия ради при регистрации пользователя предусмотреть ВСЕ ошибки, которые могут произойти. Предусмотрел буквально все (логин некорректный, почта некорректная, логин занят, почта занята, пароли не совпадают, такого кода нет в базе, код уже кем-то активирован, такое-то поле не заполнено и т.д.)! (для рекламы: при этом использовалась офигенная библиотека, в которую я въезжал около часа HTML_MetaForm). Обновляю на сервер из CVS и со спокойной душой ложусь спать... забыв проверить работоспособность на боевом сервере.
    На следующую новогоднюю ночь иду посмотреть, сколько пользователей зарегистрировалось и с удивлением обнаруживаю, что сей скрипт у меня умирает и ничего не пишет. Полчаса не мог понять, в чем дело - у меня работает, на боевом сервере нет... Экспериментальным путем выяснил, что грохается библиотека DbSimple2 при выполнении запроса... Иду в EMS PostgreSQL, проверяю для пользователя права (ну мало ли) - все верно... Спустя некоторое время до меня дошло убрать собаку перед pg_query - так и есть call to undefined function pg_query! Так твою разэдак, ну не подключил я к библиотеке обработчик ошибок! Пересобрал php (при чем, со второго раза - с первого USE="postgresql" написал вместо опять забыл чего) и все заработало.

    Если б не было собаки, я бы моментально нашел ошибку. Справедливости ради отмечу, что на сайте dklab.ru (да какой там поддержки, я сам эту библиотеку так же поддерживаю!) четко написано: "Нечего и думать использовать библиотеку, если нет своего механизма обработки ошибок!" или вроде того.

    <!--QuoteBegin-morti+3:01:2007, 15:16 -->
    <span class="vbquote">(morti @ 3:01:2007, 15:16 )</span><!--QuoteEBegin-->Проблема крылась в лишнем прбобеле ПОСЛЕ скрипта.[/quote]
    А скрипт этот случайно не bookmark_fns.php называется? )))
     
  11. morti

    morti Гость

    Для: tIT
    Уже не помню, но вроде что то из Вейлинга писал)
     
Загрузка...
Похожие Темы - Проблема Session_start()
  1. ruivit
    Ответов:
    2
    Просмотров:
    1.023
  2. AgniXRudra
    Ответов:
    2
    Просмотров:
    49
  3. Zloikaktus
    Ответов:
    0
    Просмотров:
    27
  4. c0de3r
    Ответов:
    5
    Просмотров:
    151
  5. DobermannTT
    Ответов:
    10
    Просмотров:
    157
Статус темы:
Закрыта.

Поделиться этой страницей