$ 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.
header(Location ) и СЕССИЯ сессия пуста ?
страница b1.php
Код:
<?
session_start();
$_SESSION['nn']="xxxxxxxxxxxxxxxxxxxxxxxx";
//echo "<a href='b2.php'>link</a>";
header('Location:b2.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);
?>
session_start();
echo $_SESSION['nn'];
print_r($_SESSION);
?>
МАссив сессии пуст
При использовании ссылки сессия работает а при ХЕАДЕР нет ????
Подскажите где ошибка?
header('Location:b2.php?'.session_name()."=".session_id());
Огромное спасибо, заработало !
Цитата: UAS
В чтении мануалов ошибка. Надо насильно передавать ID сессии.
header('Location:b2.php?'.session_name()."=".session_id());
header('Location:b2.php?'.session_name()."=".session_id());
Это где такое написано? Впервые встречаю принудительную передачу SESSIONID. Используется такое только при выключенных куках.
Эмм, не так выразился. Я имел в виду, что автору нужно было почитать мануал, чтобы понять принцип функционирования сессий. Тогда бы он сразу понял, что проблема в том, что не передается идентификатор сессии.
ТС делает перенаправление сходу, и идентификатор сессии просто не достигает браузера пользователя...
По-этому при выводе второй страницы сессия действительно пустая...
Если всё же отдать страницу браузеру хотя бы один раз - тогда всё будет супер.
Переделыаем первую страницу с созданием эвента POST, например:
Код:
<?
session_start();
if($_POST) {
$_SESSION['nn']="xxxxxxxxxxxxxxxxxxxxxxxx";
header('Location:b2.php');
}
?>
<form action="" method="POST">
<input type="submit" name="next_page" value="Перейти на след страницу" />
</form>
session_start();
if($_POST) {
$_SESSION['nn']="xxxxxxxxxxxxxxxxxxxxxxxx";
header('Location:b2.php');
}
?>
<form action="" method="POST">
<input type="submit" name="next_page" value="Перейти на след страницу" />
</form>
В общем, ваша сессия должна хотя бы раз достигнуть бравзера... а вы её сразу заголовком редиректите...
Я бы покапал в сторону старта сессии.
Код:
/***********
1.php
************/
<?php
session_start();
header('Location: 2.php');
?>
1.php
************/
<?php
session_start();
header('Location: 2.php');
?>
Код:
Обратите внимание на поле Set-Cookie. Если убрать session_start() из 1.php, оно пропадает.
[QUOTE=mike]
В свое время были проблемы с IIS и с кое-какими браузерами, но это было несколько лет назад
[/QUOTE]
А если не сложно, у вас не сохранилось никаких ссылок по этому поводу? И как обстоит с этим дело сейчас? Просто сам с подобным сталкивался (и еще предстоит), просто интересно почитать.
Может у ТС все-таки отключены куки?
1) при включенных куках;
2) при выключенных куках, выключенном параметре PHP session.use_only_cookies и включенном параметре session.use_trans_sid.
Цитата: Alexander92
Да скорее всего. Собственно, существует два пути передать сессию:
1) при включенных куках;
2) при выключенных куках, выключенном параметре PHP session.use_only_cookies и включенном параметре session.use_trans_sid.
1) при включенных куках;
2) при выключенных куках, выключенном параметре PHP session.use_only_cookies и включенном параметре session.use_trans_sid.
Куки в броузере включены.
Вы правы параметр session.use_only_cookies=0 выключен.
Когда то я хотел посмотреть как будут работать сесси с в таком положени если у клиента к примеру отключенны куки в броузере.
Так как всё вроде работало я и не возвращался к этому параметру.
Буду копать мануал, спасибо всем за помощь.
Не хватает ещё опыта.