0

我有问题要问你。我有两个使用验证码的 PHP 项目,并将其写入会话。我的问题是,如果我启动第一个应用程序,将验证码保存到$_SESSION['code']然后我启动第二个应用程序,我将验证码保存到同一个变量,那么第一个值将被第二个覆盖,或者 PHP 将创建两个独立的会话?

4

3 回答 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 回答