带有会话的PHP登录系统

时间:2010-06-23 12:51:34

标签: php session login

我在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.phpapp2/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,这对我来说并不好。

谢谢。

2 个答案:

答案 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();