我在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';
Run Code Online (Sandbox Code Playgroud)
=============================================
在app1/page2.php和中app2/page2.php,我启动会话并获取该变量的值.
session_start();
echo 'name: ' . $_SESSION[ 'name' ];
Run Code Online (Sandbox Code Playgroud)
=============================================
我打开HTTP://localhost/app1/page1.php然后HTTP://localhost/app1/page2.php和它的伟大工程.但在那之后,我打开http://localhost/app2/page2.php,并在屏幕上显示"这是我的名字",这是错误的.因为它是另一个应用程序,我不希望app2到达app1的会话.
我怎么解决这个问题?我不想为每个应用程序使用不同的变量名称.我认为必须有另一个好的解决方案.我也许可以在再生APP2/ID page1.php中,但如果一个人试图打开APP 2 /使page2.php,打开后APP1,他们可能会进入APP 2,这不适合我变好.
谢谢.
您需要在session_start()之前使用session_name(); 例:
app1/page1.php&page2.php
session_name('app1_session');
session_start();
Run Code Online (Sandbox Code Playgroud)
app2/page1.php&page2.php
session_name('app2_session');
session_start();
Run Code Online (Sandbox Code Playgroud)
您将需要使用session_name,它必须在 session_start 之前运行.
session_name()返回当前会话的名称.
例:
session_name("name");
session_start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1168 次 |
| 最近记录: |