php会话为不同计算机上的不同用户发出相同的session_id

时间:2014-08-16 04:23:42

标签: php session sessionid

我有一个网络应用,我现在正在测试。由于某种原因,我无法使会话正常工作。他们在我的本地网站上工作得很好。

这就是问题所在。出于某种原因,PHP会在访问网站时为不同的用户发出相同的session_id值。是的,我在测试之前删除了cookie,因此问题不在于此。

这会导致用户1以用户2身份登录,而无需输入用户名/密码组合。我使用会话cookie和其他cookie值进行持久登录。 我不知道它为什么会发生,但这都是因为两个用户共享相同的会话cookie值。

我注意到,当访问网站的时间差很小(约10-20秒)时,session_id是相同的。超过20秒 - 用户收到了不同的session_id值(这是一件好事)。

我真的尝试了所有可能的场景: - 两台不同的电脑,相同的浏览器 - 两台不同的电脑,不同的浏览器 - 一台电脑,不同的浏览器

总的来说,我使用了三台不同的计算机和三种不同的浏览器,但无济于事。

我使用标准的session_id()算法,我没有真正改变任何东西,一切都很标准。

编辑:

(补充代码)

$session_start(); 

if(!isset($_SESSION['login_check']) || $_SESSION['login_check']==0)
{
    $_SESSION['login_check'] = 1;

    if(isset($_COOKIE['user_id']) && isset($_COOKIE['session_id']))
    {
        $user = find_user($_COOKIE['user_id']);


        if($user->sid == $_COOKIE['session_id'])
        {
            // extending the cookies
            setcookie('user_id', $user->id, time() + 3600*24*14, "/", null, null, true);
            setcookie('session_id', uniqid(rand(), true), time() + 3600*24*14, "/", null, null, true);


        }
    }
}

我不会在代码中的任何地方调用session_id()。

1 个答案:

答案 0 :(得分:0)

我不知道它是否正确,但您可以尝试在mysql上使用会话。
也许它可以帮到你:http://www.devshed.com/c/a/mysql/custom-session-management-using-php-and-mysql/