В одном из моих проектов на localhost создается сеанс для входа пользователя. Он хранится в $_SESSION['uname']. Мой другой проект также использует ту же переменную имени сеанса. Проблема в том, что когда я уже вошел в админку моего первого проекта, а затем перехожу в админку другого проекта, меня не просят вводить учетные данные в окно входа; вместо этого он напрямую переносит меня в панель администратора. Я знаю, что это происходит из-за использования одного и того же $_SESSION['uname'] в моих различных проектах. Поэтому мне интересно, как мы можем заставить другой проект отображать окно входа в систему, хотя я уже вошел в свой первый проект?

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

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

0
Sachin 26 Фев 2016 в 08:38

4 ответа

Лучший ответ

Похоже, вы используете localhost для всех проектов в вашем локальном.

  1. Создайте отдельный VirtualHost для каждого проекта, тогда сеанс будет уникальным для каждого проекта - так как домены cookie разные.
  2. Если вы хотите сохранить localhost (я бы не рекомендовал), вам следует подумать о пространстве имен для сеанса каждого проекта, например $ _SESSION ['project1'] ['uname']
1
Tuan Duong 26 Фев 2016 в 06:01

Проверьте директиву php.ini session.cookie_domain, чтобы указать домен, установленный в файле cookie сеанса.

Или вы можете проверить функцию session_set_cookie_params. Он имеет параметр $domain для установки домена, в котором доступен файл cookie сеанса.

Например, чтобы установить файл cookie сеанса, видимый только для mywebsite.com:

<?php

session_set_cookie_params(3600, '/', 'mywebsite.com');

session_start();
0
Risan Bagja Pradana 26 Фев 2016 в 06:10

Вы можете использовать session_unset() на экране выхода, тогда $_SESSION['uname'] будет нулевым

В противном случае используйте специальные имена для uname (возможно, ['uname'] [0])

Вы также можете использовать md5 для uname $_SESSION[md5("project 1 uname")]; или $_SESSION[md5("project 1 namespace")]["uname"];

Надеюсь, я помог.

0
Itay Sharon 26 Фев 2016 в 07:27

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

Ссылка для настройки виртуального хоста

https://httpd.apache.org/docs/2.2/vhosts/examples.html

0
Ninju 26 Фев 2016 в 06:07