В реализации сессий PHP может быть только один сеанс за раз. Вы можете использовать session_id
, чтобы проверить, существует ли в данный момент сеанс:
if (session_id() === '') {
// no current session
}
Теперь, если активный сеанс уже существует, вы можете завершить его с помощью session_write_close
, измените имя идентификатора сеанса на session_name
, чтобы избежать конфликтов, начните сеанс, и восстановите старый сеанс, когда закончите:
$oldName = session_name();
if (session_id() !== '') {
session_write_close();
}
session_name('APPSID');
session_start();
// your session stuff …
session_write_close();
session_name($oldName);
session_start();
Единственная проблема в этом заключается в том, что реализация сеанса PHP отправляет только идентификатор сеанса последнего запущенного сеанса обратно клиенту. Поэтому вам нужно установить прозрачный идентификатор сеанса (попробуйте output_add_rewrite_var
) и / или файл cookie сеанса (см. setcookie
) по своему усмотрению.