PHP session_id () не принимает существующий идентификатор сессии - PullRequest
2 голосов
/ 05 сентября 2010

У меня проблемы с принудительным перезапуском сеансов в PHP.Вот проблема:

Я могу получить свой идентификатор сеанса с помощью session_id(), скопировать его и добавить в самый верх моего скрипта:

session_id('the_session_id');
session_start();

И когда я открываю новый браузерсеанс из другого браузера не переносится.Какие настройки я могу проверить?

1 Ответ

0 голосов
/ 05 сентября 2010

Причина:

Если вы закроете окно браузера и снова откроете его, то в этот момент начинается второй сеанс с другим идентификатором, если в используемом веб-приложении есть сеансНа основе системы аутентификации пользователь должен снова войти в систему.В то же время пользователь должен дважды выйти из системы!

Решение:

Эта функция будет использовать реальный файл cookie для идентификатора сеанса и обновляет время истечения для каждого сценария.выполнение.Срок действия равен директиве PHP "gc_maxlifetime" (по умолчанию) или каждому пользовательскому значению.Итак, поместите эту функцию в ваш файл PHP.Нам это понадобится.

<?php 

// $expire = the time in seconds until a session have to expire 
function start_session($expire = 0)
{ 
    if ($expire == 0)
        $expire = ini_get("session.gc_maxlifetime"); 
    else
        ini_set("session.gc_maxlifetime", $expire); 

    if (empty($_COOKIE['PHPSESSID']))
    { 
        session_set_cookie_params($expire); 
        session_start(); 
    }
    else
    { 
        session_start(); 
        setcookie("PHPSESSID", session_id(), time() + $expire); 
    } 
} 

?>

Теперь в верхней части страницы, где вы вводите session_id('the_session_id'); и session_start();, удалите эти строки и начните сеанс с приведенным ниже кодом:

Чтобы начать сеанс со временем истечения, заданным конфигурацией php

start_session();

Чтобы начать сеанс, который истекает через 1 час:

start_session(3600);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...