我有问题要问你。我有两个使用验证码的 PHP 项目,并将其写入会话。我的问题是,如果我启动第一个应用程序,将验证码保存到$_SESSION['code']
然后我启动第二个应用程序,我将验证码保存到同一个变量,那么第一个值将被第二个覆盖,或者 PHP 将创建两个独立的会话?
问问题
250 次
3 回答
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
这里是为了表明它不是凭空而来的。
于 2012-06-14T07:56:25.853 回答
0
另一种解决方案是设置 cookie 路径(之前session_start()
)。
于 2012-06-14T08:05:28.777 回答
0
根据我的经验,如果您的两个应用程序都在同一个虚拟目录中,那么它将被覆盖。因此,如果您不想相互覆盖,请使用不同的会话变量。
问候
于 2012-06-14T08:12:22.407 回答