我在PHP中使用会话登录系统。在所有登录示例中,人们直接使用“session_start()
”功能。但我对此感到困惑。
=============================================
在localhost上,我有那些文件;
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的会话。
我该如何解决这个问题?我不想为每个应用程序使用不同的变量名称。我认为必须有另一个好的解决方案。我可以在app2 / page1.php重新生成ID,但如果有人试图打开app2 / page2.php,打开app1之后,他们可能会进入app2,这对我来说并不好。
谢谢。
答案 0 :(得分:8)
您需要在session_start()之前使用session_name(); 例如:
app1 / page1.php&使page2.php
session_name('app1_session');
session_start();
app2 / page1.php&使page2.php
session_name('app2_session');
session_start();
答案 1 :(得分:5)
您需要使用session_name,这必须在 session_start之前运行。
session_name()返回当前会话的名称。
示例:强>
session_name("name");
session_start();