Мы используем сервер, на котором есть несколько сервисов. Поэтому, чтобы убедиться, что сеансы php не смешиваются, мы хотим использовать разные файлы cookie для каждой службы. Мы создали функцию под названием sec_session_start
, где мы определяем файл cookie (mySession
) для этой услуги. Затем мы сделали вторую функцию под названием start_my_session
для подключения к куки-файлу службы.PHP - session_id не указывает правильное имя сеанса
Каждый раз, когда мы пытаемся использовать start_my_session
, он получает информацию внутри PHPSESSID вместо mySession. Как я могу это исправить.
Следующая функция вызывается только в одном месте (когда пользователь входит в систему).
function sec_session_start() {
$secure = false;
$httponly = true;
// Forces sessions to only use cookies.
if (ini_set('session.use_only_cookies', 1) === FALSE) {
header("Location: ../error.php?err=Could not initiate the safe session (ini_set)");
exit();
}
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
session_name('mySession');
session_start(); // Start the PHP session.
echo session_id(); // USE AT THE MOMENT FOR DEBUGGING ONLY
}
Идентификатор сеанса, возвращаемый последней инструкцией, является идентификатором, соответствующим файлу mySession. (Я проверил в папку сервера/TMP и внутри отладчика ресурсов Chrome.)
Следующая функция вызывается внутри everyother защищенной страницы, когда пользователь вошел в систему.
function start_my_session() {
echo session_name('mySession').'<br>'; // DEBUG : display PHPSESSID
echo session_name().'<br>'; // DEBUG : display mySession
session_start(); // Start the mySession
echo session_id(); // DEBUG : display the PHPSESSID session id
}
Как упоминается в комментарии, то session_id по-прежнему указывает на PHPSESSID вместо mySession.
Любые советы о том, что мы делаем неправильно и как мы можем это исправить?
Пробовал и работает. Но почему? Закрывает ли он сессию по умолчанию PHP и освобождает место для нового сеанса, который я пытаюсь сделать? –
Я честно не уверен. Насколько я вижу, сеанса вообще не закрывать. Кажется, что-то ошибка в логике PHP. – rjdown
звучит хорошо. Благодарю вас за время. Я бил головой об этом в течение 20 часов (через несколько дней). –