передача идентификатора сеанса через URL - PullRequest
4 голосов
/ 06 мая 2009

Я пытаюсь заставить мой скрипт использовать идентификатор сессии URL вместо файлов cookie. На следующей странице переменная в URL не указывается в качестве идентификатора сеанса. Должно быть, я что-то упустил.

Первая страница http://www.website.com/start.php

ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
session_start();
$session_id = session_id();
header("location: target.php?session_id=". $session_id );

Следующая страница - http://www.website.com/target.php?session_id=rj3ids98dhpa0mcf3jc89mq1t0

ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
print_r($_SESSION);
print(session_id())

Результатом является другой идентификатор сеанса, а сеанс пуст.

Array ([debug] => no) pt1t38347bs6jc9ruv2ecpv7o2

Ответы [ 4 ]

4 голосов
/ 06 мая 2009

будьте осторожны при использовании URL для передачи идентификаторов сеансов, что может привести к перехвату сеанса через реферер!

3 голосов
/ 06 мая 2009

Похоже, вам просто нужно вызвать session_start () на второй странице.

Из документов:

session_start () создает сеанс или возобновляет текущий сеанс на основе текущего идентификатора сеанса, который передается через запрос, такой как GET, POST или cookie.

EDIT:

Тем не менее, вы также можете попробовать вручную извлечь идентификатор сеанса из строки запроса. На второй странице вам нужно сделать что-то вроде:

ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
session_id($_GET['session_id']);
print_r($_SESSION);
print(session_id());

Обратите внимание, что функция session_id () установит идентификатор, если вы передадите ему идентификатор в качестве параметра.

2 голосов
/ 02 января 2011

Вместо жесткого кодирования 'PHPSESSID' используйте это:

session_id($_GET[session_name()]);
2 голосов
/ 25 октября 2009

Моя проблема заключалась в использовании Flash в FF (поскольку Flash поддерживает IE, поэтому сеансы не разделяются между объектом flash и firefox)

Используя php 5.3, все эти ответы указывали на правду. То, что я наконец нашел для работы, было довольно просто ... передать идентификатор в строке запроса. Установить его. ТО начните сессию.

session_id($_GET['PHPSESSID']);
session_start();
...