Система входа в систему PHP с сеансами
Я использую сеансы для систем входа в систему на 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 , а также показывает надпись "это мое имя" на экране и это неправильно. Потому что это другое приложение, и я не хочу, чтобы приложение 2 достигло сеанса приложения 1.
Как я могу решить эту проблему? Я не хочу использовать разные имена переменных для каждого приложения. Я думаю, должно быть другое хорошее решение. Я могу восстановить идентификатор в app2/page1.php может быть, но если человек попытается открыть app2/page2.php , после открытия приложения 1 они могут попасть в приложение 2, и это не пойдет мне на пользу.
Спасибо.
2 answers
Вам нужно использовать 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();
Вам нужно будет использовать имя_сессии_, которое необходимо будет запустить перед запуском_сессии_.
Имя_сессии_() возвращает имя текущего сеанса.
Пример:
session_name("name");
session_start();