我对你有疑问。我有两个使用验证码的PHP项目,并将其写入会话。我的问题是,如果我点击第一个应用程序,将验证码保存到$_SESSION['code']
然后我启动第二个应用程序,我将验证码保存到同一个变量,然后第一个值将被第二个覆盖,或者PHP将创建两个独立的会话?
答案 0 :(得分:1)
通常,每个应用程序都将覆盖同一服务器上的会话变量。
为避免这种情况,您可以命名会话或使用session_name
功能。
您可以通过设置$_SESSION['app1']['code']
和$_SESSION['app2']['code']
或使用Symfony或Zend Framework中的会话抽象库来手动命名空间。
在每个应用程序中使用session_name
可能如下所示:
//Other init stuff here
define('APPLICATION_ID', "MY_UNIQUE_ID_1");
session_name(APPLICATION_ID);
session_start();
您必须在每个应用程序的某个配置文件中更改唯一ID。我在这里放了define
来表明它不是凭空而来的。
答案 1 :(得分:0)
另一种解决方案是set a cookie path(session_start()
之前)。
答案 2 :(得分:0)
在我的经验中,如果你的两个应用程序都在同一个虚拟目录上,那么它将被覆盖。 因此,如果您不想互相覆盖,请使用不同的会话变量。
此致