session + header (новые странности)

100

Guest
session + header (новые странности)

PHP: 4.3.11 (проверял так же на 4.3.8)
Apache: 2 (проверял так же на 1.3.33)
---------------------------------------------------

php.ini
[session]
session.save_handler = files
session.save_path = /tmp
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.entropy_length = 0
session.cache_expire = 180
session.use_trans_sid = 0
index.php:
PHP:
<?
session_start();

$_SESSION["test1"] = "test1";

if ($_GET["print"]) { 
    print_r($_SESSION);
} else {
    $_SESSION["test2"]="test2";
    session_write_close();
    header("location:index.php?print=1");
    exit();
}
?>
Проблема:
живет только сессионная переменная $_SESSION["test1"]. Если дописывать SID в location - появляется и $_SESSION["test2"], но теряется сразу же после исчезновения SID из строки URL. При использовании session.use_trans_sid = 1 хидер все равно нуждается в дописывании SID. Ощущение такое, что сессионные куки не уходят на клиента, но (!) часть сессии-то ("test1") сохраняется!

Господа магистры, кто-нибудь сталкивался с этим полтергейтсом?
 

SelenIT

IT-лунатик :)
живет только сессионная переменная $_SESSION["test1"].
А чего бы ей не жить, если при каждом старте сессии она заводится заново?
При использовании session.use_trans_sid = 1 хидер все равно нуждается в дописывании SID.
Это нормально - см. PHP FAQ: Сессии. Подробное описание работы и объяснение механизма.
Ощущение такое, что сессионные куки не уходят на клиента...
Подобные ощущения легко проверить с помощью PHP FAQ: Самые основы. Просмотр обмена HTTP заголовками
...но (!) часть сессии-то ("test1") сохраняется!
См. начало этого поста.
 

100

Guest
на index.php имеем:
HTTP/1.1 200 OK
Date: Mon, 11 Jul 2005 08:56:23 GMT
Server: Apache/2.0.54 (Win32)
X-Powered-By: PHP/4.3.11
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
Set-Cookie: PHPSESSID=f7e04a00df9bc12a925c6a5d36dec143; path=/
Content-Length: 0
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
на index.php?print=1 имеем:
HTTP/1.1 200 OK
Date: Mon, 11 Jul 2005 09:00:24 GMT
Server: Apache/2.0.54 (Win32)
X-Powered-By: PHP/4.3.11
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
Set-Cookie: PHPSESSID=24116fc4a5f111b0532d02eec68d05d0; path=/
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
Как видим, SIDы разные и при этом $_SESSION["test1"] умудряется выжить, а $_SESSION["test2"] - сдохнуть (что мне кажется наиболее характерным при таком поведении).

-~{}~ 11.07.05 13:16:

Судя по всему, не отправляются печеньки. :(
Всем спасибо. :)

-~{}~ 11.07.05 22:45:

Как оказалось (вдруг кто искать солюшн будет) - в моем случае возникли траблы с отправкой куки из-за прелестей XP Home...
 
Сверху