页面刷新后会话消失

Kea*_*ire 8 php session

这是我第一次在PHP上使用会话.从StackOverflow和其他网站获取一些信息我要建立我的第一个PHP登录但我遇到了问题,不知道如何解决它.

基本上,在我设置会话的那一刻,页面刷新后,此会话消失.不应该留一段时间吗?(可以用set_cookie_params等设置,但这是另一个话题)

我在页面的开头(全局)这段代码:

ini_set('session.cookie_httponly', 1);
ini_set('session.entropy_file', '/dev/urandom');
ini_set('session.hash_function', 'whirlpool');
ini_set('session.use_only_cookies', 1);
ini_set('session.cookie_secure', 1);

session_name("RANDOMID");
session_start();

if (isset($_SESSION['uid']))
{
    if ($_SESSION['ipremote'] !== getUserIP() && $_SESSION['useragent'] !== getUserAgent())
    {
        session_unset();
        session_destroy();

        session_regenerate_id(true);
    }
}
else
{
    session_regenerate_id(true);

    $_SESSION['ipremote'] = getUserIP();
    $_SESSION['useragent'] = getUserAgent();
}
Run Code Online (Sandbox Code Playgroud)

然后在我的login.php文件中,当用户插入正确的信息时:

$_SESSION['uid'] = 3;

header("Location: index.php");
exit;
Run Code Online (Sandbox Code Playgroud)

那之后的重定向UID会消失的问题:我把在结束的index.php页面var_dump中的$_SESSION变量,而我看到的只是每次被设置在该IP和用户代理else条件.

编辑:我试图替换会话初始化的所有内容只是session_start();它的工作原理,我不明白为什么这个安全的会话初始化它不起作用,使会话消失.

CBr*_*roe 8

https://当你测试这个时,你是在通过你的页面调用吗?

否则,解释很简单:

ini_set('session.cookie_secure', 1);
Run Code Online (Sandbox Code Playgroud)

这使得PHP使用secure标志设置会话cookie ,这意味着只允许浏览器通过安全连接发回请求.

因此,如果您实际上仅通过HTTP进行测试,那么会话cookie将不会与下一个请求一起发回,因此PHP找不到任何会话ID,因此当您调用session_start时会启动一个全新的会话...