Как получить доступ к сессиям php на разных компьютерах - PullRequest
4 голосов
/ 22 апреля 2011

Я делаю некоторые упражнения по использованию сессий в php. Я настроил это так:

$_SESSION['log_users'][] = array(array('Username'=>$username))

Я пытался на ней поэкспериментировать. И обнаружил, что генерируемый сеанс отличается, когда я использую другой IP для доступа к нему. При использовании того же браузера, который Firefox.

Вот что я сделал:

  1. Настройте мой маршрутизатор так, чтобы другие могли получить доступ к упражнению, над которым я работаю, используя мой внешний IP-адрес.
  2. Затем я открыл версию упражнения для локального хоста:

    http://localhost/exercise/sessions.php

  3. Затем тот, который использует внешний IP-адрес:

    http://201.xxx.xxx/exercise/sessions.php

  4. Затем я заполнил массив сессий на каждой вкладке браузера. И выяснил, что каждый из этих двух хранит разные версии сессии. Обнаружено с помощью print_r($_SESSION['log_users'])

Неужели так оно и должно себя вести? Могу ли я что-нибудь сделать, чтобы была только одна версия сеанса? Я сейчас использую Wampserver 2.1

Ответы [ 3 ]

4 голосов
/ 22 апреля 2011

Сеанс сохраняется на стороне сервера, а файл cookie сеанса создается на стороне клиента, чтобы идентифицировать текущий сеанс браузера, который содержит идентификатор текущего сеанса.

Файл cookie сеанса хранится в зависимости от домена, который вы используете.чтобы получить доступ к сайту.

Поскольку вы используете другой домен, один - localhost, а другой - ip, что создаст два разных сеанса.

При посещении страниц через домен localhost.Он создаст сеансовый файл cookie и сохранит его в домене localhost.Если вы зайдете на другую страницу в той же доменной системе, проверьте, существует ли файл cookie сеанса, он возобновит старый сеанс и не создаст новый.

В то же время, если вы получите доступ через ip, файл cookie сеанса несохраняется для этого ip, но тогда система предполагает, что для этого пользователя нет активного сеанса, и начнет новый сеанс, и файл cookie сеанса сохраняется на основе этого ip.

Это способ, которым сеансработает.

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

2 голосов
/ 22 апреля 2011

Файл cookie сеанса привязан к имени домена. При первом обращении к нему он будет привязан к домену localhost.

Если вы затем направите свой браузер на адрес 201.xx.xx.xx, доменное имя больше не будет совпадать. И ваш браузер не будет отправлять этот cookie снова. Вот почему будет создан новый сеанс. Хотя на самом деле это один и тот же сервер.

0 голосов
/ 22 апреля 2011

В вашем случае только $ _SESSION вам не поможет.Вы также должны попробовать использовать $ _SESSION и Database.

Вы должны синхронизировать ваш сеанс и запись сеанса базы данных.

Система проверит вашу запись в базе данных.Если у вас есть доступная запись, она будет напрямую генерировать сессию для вашего сайта.Таким образом, только один логин может быть доступен для всех браузеров.

...