提问人:vinai 提问时间:12/28/2022 更新时间:12/29/2022 访问量:96
如何将在同一服务器上运行的 2 个 PHP 应用程序与使用公共会话分开
How to separate 2 PHP apps running on same server from using a common session
问:
我有 2 个独立的 PHP 应用程序在同一个域服务器上运行:abc.com/demo 和 abc.com/live
在这两个应用程序中,几乎每个 PHP 页面上都有 session_start()。一旦单个用户与第二个应用交互,第一个应用就会冻结或停止工作。我认为两者都使用相同的会话 ID,这会导致此冲突。
我在PHP手册上读到指定PHP会话名称,例如
session_name("DEMO");
或 session_name(“直播”);可能会有所帮助。
我的问题是,我是否需要在两个应用程序中的每个PHP页面上指定session_name,或者仅在登录成功过程中首次创建会话时才需要。
请指教。谢谢。
答:
2赞
Top-Master
12/28/2022
#1
“在每一个......页面“是正确的方法。
但是将其分离到另一个脚本中,并将其包含在其他脚本中。
例
因为您将会话命名为“DEMO”和“LIVE”, 也许将决定会话的逻辑放在两个应用程序共享和/或使用的文件中。
$isProduction = ...;
session_name($isProduction ? "LIVE" : "DEMO");
session_start();
1赞
Md Zahid
12/28/2022
#2
如果你的意思是你的PHP文件数量,并且你想访问存储在PHP会话中的一些值,那么你应该session_start();对于每个文件
您可以像这样分离会话
session_name($isAPP_ONE ? "APP_ONE" : "APP_TWO");
喜欢store_session.php
session_start();
$_SESSSION["username"] = "Md Zahidul Islam";
首页.php
session_start();
$_SESSSION["username"]; // this will give you Md Zahidul Islam
首页-两个.php
session_start();
$_SESSSION["username"]; // this will give you Md Zahidul Islam
如果你使用这样的工作,那么就没有必要使用session_start();在每个文件上。
像标题.php
session_start();
首页.php
include("header.php");
$_SESSSION["username"]; // this will return you Md Zahidul Islam and this value will come from the store_session.php file
首页-两个.php
include("header.php");
$_SESSSION["username"]; // this will return you Md Zahidul Islam and this value will come from the store_session.php file
评论
0赞
vinai
12/28/2022
这是 2 个完全独立的应用程序。因此,如果会话变量名称恰好相同,则不应将其从一个应用程序传递到另一个应用程序。所以我发现我们需要添加 session_name(“AAA”);和 session_Name(“BBB”),分别放在两个应用程序的每个页面上。将在生产中尝试这个,看看它是否有效!
0赞
Md Zahid
12/29/2022
您可以像这样分离会话 session_name($isAPP_ONE ?“APP_ONE” : “APP_TWO”);
评论