PHP会话因不同的客户端ip而丢失

时间:2013-05-22 14:07:48

标签: php session-variables

当我通过具有两个IP地址的平衡网关将我的客户端连接到我的托管服务器时,我在PHP中有一个奇怪的会话行为。

我正确地使用cookie初始化会话,我设置了一个会话布尔变量,并且对于调试我打印了这个信息:

    echo var_dump($_SESSION["islogged"]);
    echo var_dump(session_id());
    echo var_dump($_SERVER["REMOTE_ADDR"]);

比我刷新页面多次,我得到两个结果:

bool(false) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "48.129.84.146" 
bool(true) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "96.19.184.38" 
bool(true) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "96.19.184.38" 
bool(false) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "48.129.84.146" 
bool(false) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "48.129.84.146" 
bool(true) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "96.19.184.38" 
...

广告,您可以看到会话是相同的,但会话栏更改。 你知道怎么解决这个问题吗?

这是登录检查:

$ISLOGGED=!empty($_SESSION["islogged"]) 

这是登录代码:

$ISLOGGED=$_SESSION["islogged"]=$_POST["password"]==$password;

1 个答案:

答案 0 :(得分:0)

你可能正在使用suhosin使用远程IP地址进行额外的会话修改。您可能需要仔细检查配置中的cryptraddr and checkraddr值。