Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

header(Location ) и СЕССИЯ сессия пуста ?

62K
03 марта 2011 года
sebastjan
16 / / 20.01.2011
Не пойму почему не работает сессия при использовании header() ???
страница b1.php
 
Код:
<?
session_start();
$_SESSION['nn']="xxxxxxxxxxxxxxxxxxxxxxxx";
//echo "<a href='b2.php'>link</a>";
header('Location:b2.php');
?>

страница b2.php
 
Код:
<?
session_start();
echo $_SESSION['nn'];
print_r($_SESSION);
?>

МАссив сессии пуст
При использовании ссылки сессия работает а при ХЕАДЕР нет ????
Подскажите где ошибка?
244
03 марта 2011 года
UAS
2.0K / / 19.07.2006
В чтении мануалов ошибка. Надо насильно передавать ID сессии.

header('Location:b2.php?'.session_name()."=".session_id());
62K
03 марта 2011 года
sebastjan
16 / / 20.01.2011
Огромное спасибо, заработало !
13
03 марта 2011 года
RussianSpy
3.0K / / 04.07.2006
Цитата: UAS
В чтении мануалов ошибка. Надо насильно передавать ID сессии.

header('Location:b2.php?'.session_name()."=".session_id());



Это где такое написано? Впервые встречаю принудительную передачу SESSIONID. Используется такое только при выключенных куках.

244
03 марта 2011 года
UAS
2.0K / / 19.07.2006
Эмм, не так выразился. Я имел в виду, что автору нужно было почитать мануал, чтобы понять принцип функционирования сессий. Тогда бы он сразу понял, что проблема в том, что не передается идентификатор сессии.
369
03 марта 2011 года
Kesano
451 / / 09.10.2007
Что-то мне подсказывает, что причина немного другая...
ТС делает перенаправление сходу, и идентификатор сессии просто не достигает браузера пользователя...
По-этому при выводе второй страницы сессия действительно пустая...

Если всё же отдать страницу браузеру хотя бы один раз - тогда всё будет супер.

Переделыаем первую страницу с созданием эвента POST, например:

Код:
<?
session_start();

if($_POST) {
  $_SESSION['nn']="xxxxxxxxxxxxxxxxxxxxxxxx";
  header('Location:b2.php');
}
?>
<form action="" method="POST">
<input type="submit" name="next_page" value="Перейти на след страницу" />
</form>

В общем, ваша сессия должна хотя бы раз достигнуть бравзера... а вы её сразу заголовком редиректите...
4
04 марта 2011 года
mike
3.7K / / 01.10.2002
Установка сессий в редиректе должна работать в большинстве браузеров и серверов. В свое время были проблемы с IIS и с кое-какими браузерами, но это было несколько лет назад. Именно по этому на форуме появляется дополнительная страница типа "спасибо что вошли, теперь редирект".

Я бы покапал в сторону старта сессии.
278
04 марта 2011 года
Alexander92
1.1K / / 04.08.2008
Kesano, вы неправы... header есть не более, чем выдача соответствующего заголовка, который прекрасно достигает браузера, вместе с идентификатором сессии. В качестве примера привожу следующее:

 
Код:
/***********
   1.php
************/
<?php
 session_start();
 header('Location: 2.php');
?>


Код:
$ telnet localhost 80
Trying 195.24.140.200...
Connected to localhost.
Escape character is '^]'.
GET /tmp/1.php HTTP/1.0
Host: <myhost>

HTTP/1.1 302 Found
Date: Thu, 03 Mar 2011 21:07:31 GMT
Server: Apache/2.2.9
X-Powered-By: PHP/5.2.6-1+lenny8
Set-Cookie: PHPSESSID=08cb692184a6372507722636f7898de3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: 2.php
Vary: Accept-Encoding
Content-Length: 0
Connection: close
Content-Type: text/html

Connection closed by foreign host.


Обратите внимание на поле Set-Cookie. Если убрать session_start() из 1.php, оно пропадает.



[QUOTE=mike]
В свое время были проблемы с IIS и с кое-какими браузерами, но это было несколько лет назад
[/QUOTE]
А если не сложно, у вас не сохранилось никаких ссылок по этому поводу? И как обстоит с этим дело сейчас? Просто сам с подобным сталкивался (и еще предстоит), просто интересно почитать.
13
04 марта 2011 года
RussianSpy
3.0K / / 04.07.2006
Может у ТС все-таки отключены куки?
278
04 марта 2011 года
Alexander92
1.1K / / 04.08.2008
Да скорее всего. Собственно, существует два пути передать сессию:
1) при включенных куках;
2) при выключенных куках, выключенном параметре PHP session.use_only_cookies и включенном параметре session.use_trans_sid.
62K
04 марта 2011 года
sebastjan
16 / / 20.01.2011
Цитата: Alexander92
Да скорее всего. Собственно, существует два пути передать сессию:
1) при включенных куках;
2) при выключенных куках, выключенном параметре PHP session.use_only_cookies и включенном параметре session.use_trans_sid.



Куки в броузере включены.
Вы правы параметр session.use_only_cookies=0 выключен.
Когда то я хотел посмотреть как будут работать сесси с в таком положени если у клиента к примеру отключенны куки в броузере.
Так как всё вроде работало я и не возвращался к этому параметру.
Буду копать мануал, спасибо всем за помощь.
Не хватает ещё опыта.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог