powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Как определить, что куки браузер не отправляет?
7 сообщений из 7, страница 1 из 1
(PHP) Как определить, что куки браузер не отправляет?
    #33092638
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это нужно затем, чтобы такая строка:
Header("Lacation: ...");
Невызывала создание новой сессиии
Т.е. чтобы можно было использовать следующую конструкцию:
if (<Куки не отсылаются>)
{
Header("Lacation: ...".session_name()."=".session_id());
}
else
{
Header("Lacation: ...");
}
...
Рейтинг: 0 / 0
(PHP) Как определить, что куки браузер не отправляет?
    #33092674
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Ничего определять не надо вообще. Почему не будет создана новая сессия, написано в PHP FAQ: Сессии. Подробное описание работы и объяснение механизма.
И вообще конструкцию session_name().'='.session_id() лично я бы заменил на SID
...
Рейтинг: 0 / 0
(PHP) Как определить, что куки браузер не отправляет?
    #33093461
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Ничего определять не надо вообще. Почему не будет создана новая сессия, написано в PHP FAQ: Сессии. Подробное описание работы и объяснение механизма.
И вообще конструкцию session_name().'='.session_id() лично я бы заменил на SID

А я говорю - будет. Объясняю подробней.
Есть файл с формой. Форма отсылается в этот же файл. При обработке полученных данных происходит перезагрузка файла с помощью отсылки заголовка.
И так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
...
if (isset($_POST['b']))
{
  $_SESSION['text'] = "b was pressed!";
  header("Location: ".$_SERVER['PHP_SELF']);
  exit;
}
...
<form method=post>
...
if ($_SESSION['text'])
{
  echo $_SESSION['text'];
  $_SESSION['text'] = "";
}
...
<input type=submit value=b>
</form>

Так вот, если куки не отправляются, то $_SESSION['text'] не будет выводиться.
Но стоит поменять
header("Location: ".$_SERVER['PHP_SELF']);
на
header("Location: ".$_SERVER['PHP_SELF']."?".session_name()."=".session_id());
то все начинает работать, т.к. id сессии передается.
Но при этом к строке адреса будет всегда добавляться id сессии, даже если куки работают.
Как от этого избавиться?
...
Рейтинг: 0 / 0
(PHP) Как определить, что куки браузер не отправляет?
    #33093478
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
AlexGТак вот, если куки не отправляются
...
Но стоит поменять
header("Location: ".$_SERVER['PHP_SELF']);
на
header("Location: ".$_SERVER['PHP_SELF']."?".session_name()."=".session_id());
то все начинает работать, т.к. id сессии передается.
Но при этом к строке адреса будет всегда добавляться id сессии, даже если куки работают.
Как от этого избавиться?Вы русским языком вообще как, владеете? Я вам выше уже сказал, что для этого нужно сделать.
http://php.net/session#session.constants
...
Рейтинг: 0 / 0
(PHP) Как определить, что куки браузер не отправляет?
    #33093976
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Вы русским языком вообще как, владеете?
Наверно нет, английским лучше. Понял.
Но возник другой вопрос, а точнее спрашиваю оценки. У меня в адресе при такой строке в скрипте
Код: plaintext
header("Location: ".$_SERVER['PHP_SELF']."?".SID);
если куки работают, добавляется знак вопроса
Код: plaintext
http://.../?
Я не хочу чтобы такое было.
У меня такое решение возникло:
Код: plaintext
1.
2.
3.
4.
5.
if (SID)
   $sess = "?".SID;
else
   $sess = "";
header("Location: ".$_SERVER['PHP_SELF'].$sess);

Так нормально будет или есть более правильные решения?
...
Рейтинг: 0 / 0
(PHP) Как определить, что куки браузер не отправляет?
    #33093996
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Нормально. Правда смысла "более правильное решение" я не понял - смысл то всё равно остаётся один и тот же. Можно, конечно, извернуться и воспользоватсья тернарным оператором
Код: plaintext
header("Location: ".$_SERVER['PHP_SELF'].(SID ? '' : '?'.SID));
но это уже на любителя и к понятию "правильно" отношения не имеет.
...
Рейтинг: 0 / 0
(PHP) Как определить, что куки браузер не отправляет?
    #33094001
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Пардон, наоборот, конечно же:
Код: plaintext
header("Location: ".$_SERVER['PHP_SELF'].(SID ? '?'.SID : ''));
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Как определить, что куки браузер не отправляет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]