автоматическое истечение срока сессии - PullRequest
3 голосов
/ 12 января 2012

Я столкнулся со странным сценарием. в основном на каждой моей веб-странице я делаю

session_start();
if(!isset($_SESSION['login']))
    header("Location: login.php");

, чтобы убедиться, что каждый пользователь вошел первым. Я работаю в Chrome, и что произойдет, если я войду в свое веб-приложение и открою любую страницу, она работает нормально. В то же время, если на другой вкладке я захожу на свой хост-сервер, я выхожу из своего веб-приложения. Если я снова войду в свое приложение, я выйду из своего хостинг-сервера !!

Что я делаю не так? Есть ли проблема при проверке или установке переменной сеанса?

Я устанавливаю сессию следующим образом:

//if authentication successful
session_start();
    $_SESSION['login'] = "1";

Ответы [ 2 ]

1 голос
/ 12 января 2012

Я думаю, вы обнаружите, что причина в том, что оба хоста имеют одинаковое сетевое имя, например test.www.example.com и www.example.com

Просто используйте другое сетевое имя для тестовой машиныи он должен работать или убедиться, что вы явно используете непересекающиеся значения для session.cookie_domain

1 голос
/ 12 января 2012

У меня очень похожая проблема, и я думаю, что это происходит только потому, что две сессии с одним и тем же именем в одном и том же месте одного и того же домена не могут сосуществовать.

Возможно, решение следует использоватьсеансовые куки.Вы можете установить cookie только для папки, а не для всего домена.Таким образом, я думаю, что вы можете управлять 2 сеансами одновременно, но я не уверен.

Попробуйте:

session_start();
setcookie(session_name(), session_id(), 0, '/public/');

Где /public/ может быть определенной папкой, в которой вашнаходится сайт или путь к приложению (спасибо Полу за указание на это).

Затем вы проверите, установлен ли сеанс:

$session_cookie = 
   isset($_COOKIE[ini_get('session.name')]) ? 
   $_COOKIE[ini_get('session.name')] : 
   null;

Возможно, это не сработает, так какдругой сеанс может быть «сохранен» в корневой папке вашего веб-приложения.Но если вы можете сделать это выше и для своего хост-сервера, вам следует решить эту проблему.

Вы также можете попытаться установить другое имя сеанса в своем веб-приложении.

Надеюсь, это поможет.

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