Система входа в PHP с сессиями - PullRequest
4 голосов
/ 23 июня 2010

Я использую сессии для систем входа в PHP. Во всех примерах входа в систему люди напрямую используют функцию "session_start()". Но я в замешательстве.

=============================================

На локальном хосте у меня есть эти файлы;

http://localhost/app1/page1.php

http://localhost/app1/page2.php

http://localhost/app2/page2.php

=============================================

В app1/page1.php я запускаю сеанс и устанавливаю переменную.

 session_start();
 session_regenerate_id( true );
 $_SESSION[ 'name' ]    = 'this is my name';

=============================================

В app1/page2.php и app2/page2.php я запускаю сеанс и получаю значение этой переменной.

 session_start();
 echo 'name: ' . $_SESSION[ 'name' ];

=============================================

Я открываю http://localhost/app1/page1.php, а затем http://localhost/app1/page2.php, и это прекрасно работает. Но после этого я открываю http://localhost/app2/page2.php,, и на экране появляется надпись «это мое имя», и это неправильно. Потому что это другое приложение, и я не хочу, чтобы app2 достиг сеанса app1.

Как я могу решить эту проблему? Я не хочу использовать разные имена переменных для каждого приложения. Должно быть другое хорошее решение, я думаю. Я могу перегенерировать ID в app2 / page1.php, но если кто-то попытается открыть app2 / page2.php, то после открытия app1 он может попасть в app2, и мне это не поможет.

Спасибо.

Ответы [ 2 ]

8 голосов
/ 23 июня 2010

Вам необходимо использовать session_name () перед session_start ();Пример:

app1 / page1.php & page2.php

session_name('app1_session');
session_start();

app2 / page1.php & page2.php

session_name('app2_session');
session_start();
5 голосов
/ 23 июня 2010

Вам нужно будет использовать session_name , которое нужно будет запустить до session_start.

session_name () возвращает имя текущего сеанса.

Пример:

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