Система входа в систему 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, и это не пойдет мне на пользу.

Спасибо.

Author: Prasoon Saurav, 2010-06-23

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();
 8
Author: Bogdan, 2010-06-23 12:58:48

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

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

Пример:

session_name("name");
session_start();
 5
Author: Russell Dias, 2010-06-23 12:58:22