За последние 24 часа нас посетили 48769 программистов и 1696 роботов. Сейчас ищут 1080 программистов ...

Неуловимая кука

Тема в разделе "Прочие вопросы по PHP", создана пользователем uorypm, 9 июл 2012.

  1. uorypm

    uorypm Активный пользователь

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    Всем доброго времени суток.
    Задача: вывести значение переменной куки, затем изменить это значение.
    Что за механизм определяет такое поведение куки (и желательно ссылку на сабж)? Спасибо.
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Так однажды уже записалось значение, которое не проходит проверку
    Код (Text):
    1. if(!isset($_SESSION['who_am_I']))
    Оно и будет всегда выводиться, если не удалить куки.
     
  3. uorypm

    uorypm Активный пользователь

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    YSandro, будьте любезны хотя бы запустить код перед выводами.
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Да, запустил, не правильно работает :)
     
  5. uorypm

    uorypm Активный пользователь

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    Все правильно работает. Вопрос: почему работает так, а не иначе? Т_Т
     
  6. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Работает не правильно в смысле не по вашей задумке (если только вашей задумкой не является тестинг участников форума).
    Заголовок header говорит браузеру, какой скрипт открыть. Но до этого момента текущий скрипт ещё работает, и кукам присваивается новое значение. Поставьте после редиректа exit.
    Код (Text):
    1. header("Location: {$_SERVER['SCRIPT_NAME']}");exit;
     
  7. uorypm

    uorypm Активный пользователь

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    РЕШЕНО:
    Код (PHP):
    1. <?php
    2. if(!isset($_SESSION['who_am_I'])){
    3.     $_SESSION['who_am_I'] = "I am PRO";
    4.     header("Location: {$_SERVER['SCRIPT_NAME']}");
    5.     exit; // Дурная моя голова
    6. }
    7. echo $_SESSION['who_am_I'];
    8. $_SESSION['who_am_I'] = "I am NOOB";
    9. ?>
    Добавлено спустя 59 секунд:
    YSandro, опередили :) Забыл, что выбивается пустая строка между заголовком и телом.
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    uorypm, в бан тебя... Не послушный ты.