За последние 24 часа нас посетили 16524 программиста и 1578 роботов. Сейчас ищут 804 программиста ...

Session

Тема в разделе "PHP для новичков", создана пользователем Castle, 25 дек 2014.

  1. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    А ты сделай отладку http://phpfaq.ru/debug
    Что сессия содержит там где "если есть сессия то выведет кнопка выход"

    Добавлено спустя 2 минуты 7 секунд:
    И что это за вакханалия?
    Зачем в if присвоение? https://php.net/manual/ru/language.operators.assignment.php
    Код (PHP):
    1. if($login=$avts[login] or $pass=$avts[pass]){
    2.     session_start() or die();
    3.     $_SESSION['USER']="$avts[login]";
    4.     echo $_SESSION['USER'];
    5.     
    6.     }}} 
     
  2. Castle

    Castle Новичок

    С нами с:
    17 дек 2014
    Сообщения:
    32
    Симпатии:
    0
    нет там просто if у меня стоит и если сессия существует он должен вывести кнопку выход вместо кнопки вход
    ну смотрите если я сделаю откладку все ошибки исчезнут но header у меня все равно не работает это значит где то выводится заголовок??
     
  3. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ты хоть анализируешь наши ответы?

    $login=$avts[login] тут ошибка, присвоение вместо сравнения
     
  4. ciamon

    ciamon Новичок

    С нами с:
    19 дек 2014
    Сообщения:
    34
    Симпатии:
    0
    Скачал и глянул код. Я, правда, не понял решил топикстартер проблему с сессией или ещё нет.
    В общем сессия стартует в файле content.php. Этот файл подключается в середине index.php ("<?php include $path; ?>"). К этому моменту в поток уже отдано куча Html-кода. Решается проблема, как уже было сказано, просто: надо "session_start() or die();" перенести в начало файла index.php.
    Код (Text):
    1. <?php
    2. include "mods/connect.php";
    3. ...
    4. $path = "mods/$mod.php";
    5. ?>  
    6. <!DOCTYPE html>
    7. <html>
    8. <head>
    9. ...
    10.     <div class="main"><?php include $path; ?></div>
    11. ...
    З.Ы, В "if" нужно писать "==", а не "=".
     
  5. Castle

    Castle Новичок

    С нами с:
    17 дек 2014
    Сообщения:
    32
    Симпатии:
    0
    спасибо я все исправил и сессия работает но все же если я потом ставлю header он ругается почему ?

    Добавлено спустя 5 минут 26 секунд:
    и еще один вопрос у меня сессия работает если 2 раза обновить страницу так и должно быть????
     
  6. ciamon

    ciamon Новичок

    С нами с:
    19 дек 2014
    Сообщения:
    34
    Симпатии:
    0
    Что есть "ставлю header"? И что есть "ругается"?
    Команды "header(...)" тоже должны выполняться до того, как браузеру что-то будет отдано.

    Вероятно вывод того, что ставится в сессию, находится выше того места, где, собственно, что-то в сессию попадает.
     
  7. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Пусть там что угодно улетает. Почитай, как работает буфер вывода. Он не тупо собирает все как есть. Он перехватывает все выбросы заголовков и ставит их перед выводом контента. То есть, с буфером вывода тебе вообще плевать, когда выкидывать заголовки, и есть там бом или нет. Заголовки априори будут идти первыми. Это его прямое назначение - снять с разработчика заголовочный геморрой, из-за которого некоторые готовы архитектуру уродовать.
    1) Сессия не работает? А ты проверял?
    2) Буфер вывода "просто скрывает ошибки"? Сначала почитай, что это такое, чтоли, камрад, для чего служит, и как работает.

    Ошибки скрывает собачка @. Буфер вывода сортирует вывод, расставляя заголовки на свое место, а контент на свое.