Почему может не работать сессия

iNfantry

Новичок
Столкнулся с такой проблемой, раньше всегда использовал куки:

session.use_cookies = 1

Теперь возникла необходимость сделать сессию через ссылку,

session.use_cookies = 0
session.use_trans_sid = 1

Только после этого сессии перестали работать вобще, а именно - идентификатор есть, в ссылки подставляется, но переменные не сохраняются.

Тоесть допустим происходит авторизация через ПОСТ-форму, пишу после этого

$_SESSION['user'] = $user;
$_SESSION['key'] = md5($pass);

Но после перезагрузки страницы этих переменных в сессии нет!
Причем если использую куки, то всё работает.

Что надо сделат ьчтобы и по sid в ссылке нормально работало?
 

Major

Новичок
А sid по ссылке передается? Надо отследить весь путь, возможно теряется SID при POST запросе во время авторизации...
 

iNfantry

Новичок
session_start() используется ? :)
Иссесна. ;)

2Major, нет, нигде ничего не теряется, суть в другом.
Если безо всяких постов тупо записать

$_SESSION['user'] = 'admin';
$_SESSION['key'] = md5('qwerty');

то после рефреша(естественно с sid в ссылке) переменные будут утеряны!

Да кстати, вначале еще такие настройки ставлю из скрипта

ini_set('session.use_cookies', '1');
ini_set('session.use_trans_sid', '0');

Если использовать куки то всё работает, без них - никак.
 

iNfantry

Новичок
Я не спорю, может в чем-то не прав, тогда поправьте меня:

PHP:
<?
ini_set('display_errors', 1);
error_reporting(E_ALL);

ini_set('session.use_cookies', '0');
ini_set('session.use_trans_sid', '1');

session_start();

print_r($_SESSION);

if (isset($_GET['set']))
{
	$_SESSION['name'] = 'admin';
	$_SESSION['key']  = md5('qwerty');
	header('Location: test.php?PHPSESSID='.session_id());
}

echo '<br><br><a href="test.php?PHPSESSID='.session_id().'&set=1">set vars</a> / <a href="test.php?PHPSESSID='.session_id().'">refresh</a>';
?>
Всегда выводится пустой массив.
 

s@nch0

Хочу всё знать
У меня всё работает. В темповой директории создаётся файлик для сессии ?

P.S.
Самый строгий вывод ошибок для PHP error_reporting = -1
Попробуйте с этим параметром. Будет ли что-то выводиться на экран или в error_log ?
 

s@nch0

Хочу всё знать
И что вас так удивило ?!

Человек писал, что с кукисами все работает. Отсюда следствие - не передается SID на сервер...
Это одна из причин. К слову, проблему пока не решили. Так что не нужно быть столь категоричным.
 

Major

Новичок
Главное без накала страстей... У меня непроизвольная улыбка, когда люди говорят: "У меня все работает!". Я уже пережил эту стадию давным давно, так что щас просто невольно улыбаюсь, когда это слышу, не берите в голову... Ничего личного...

Просто то, что у Вас работает, не решает поблему человека =). Опять никакой грубости, все говорю нежно и ласково, улыбаясь... (вот свидетельство: =) =) =) =) )
 

iNfantry

Новичок
1. var_dump(
SID
)

string(36) "PHPSESSID=jjn75ipj9n3k15gcko9j4umgd7"


2. session_name()=='PHPSESSID'


3. Самый строгий вывод ошибок для PHP error_reporting = -1 - не совсем понял, в функцию -1 или это константа такая?
 

s@nch0

Хочу всё знать
3. Самый строгий вывод ошибок для PHP error_reporting = -1 - не совсем понял, в функцию -1 или это константа такая?
Через ini_set или в php.ini :)
В идеале, 2-й вариант.

P.S.
Так в темповой директории создаётся файлик для сессии ?
 

s@nch0

Хочу всё знать
Главное без накала страстей... У меня непроизвольная улыбка, когда люди говорят: "У меня все работает!". Я уже пережил эту стадию давным давно, так что щас просто невольно улыбаюсь, когда это слышу, не берите в голову... Ничего личного...

Просто то, что у Вас работает, не решает поблему человека =). Опять никакой грубости, все говорю нежно и ласково, улыбаясь... (вот свидетельство: =) =) =) =) )
Я лишь констатировал факт, что в самом коде проблем нет. И для решения проблемы предложил другой вариант.

Ну а в плане срача - я отношусь спокойно. Под настроение могу конечно покидаться какашками, но это не есть гуд. :)
 

Major

Новичок
PHP:
<?
ini_set('display_errors', 1);
error_reporting(E_ALL);

ini_set('session.use_cookies', '0');
ini_set('session.use_trans_sid', '1');

session_start();

print_r($_SESSION);

if (isset($_GET['set']))
{
    $_SESSION['name'] = 'admin';
    $_SESSION['key']  = md5('qwerty');
    header('Location: test.php?'.SID);
}

echo '<br><br><a href="test.php?'.SID.'&set=1">set vars</a> / <a href="test.php?'.SID.'">refresh</a>';
?>
А если так?
 

Major

Новичок
Вот теперь и я скажу: у меня все работает... Что-то здесь не так...
 
Сверху