这是我第一次在PHP中使用会话。从StackOverflow和其他网站获取一些信息来构建我的第一个PHP登录,但是我遇到了一个问题,不知道该如何解决。
基本上,在我设置一个会话时,在页面刷新后,这个会话就消失了。它不应该保持一段时间吗?(可以使用set_cookie_params等设置,但这是另一个话题)
我在页面开始处(全局)有以下代码:
重定向后UID会话消失的问题:我在
基本上,在我设置一个会话时,在页面刷新后,这个会话就消失了。它不应该保持一段时间吗?(可以使用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();
}
然后在我的 login.php 文件中,当用户输入正确的信息:
$_SESSION['uid'] = 3;
header("Location: index.php");
exit;
重定向后UID会话消失的问题:我在
index.php
页面的末尾放置了$_SESSION
变量的var_dump
,并且我只看到每次在else
条件中设置的IP地址和用户代理。 编辑:我尝试只用session_start();
替换会话初始化的所有内容,它可以正常工作,但我不明白为什么这个安全的会话初始化不能正常工作并导致会话消失。
index.php
文件中,顶部需要添加session_start();
语句,以便于访问 SESSION 变量和值。请注意,翻译过程中不会添加解释或其他任何额外的信息。 - Alive to die - Anantsession_name("RANDOMID")
- 这里的“RANDOMID”是字面意思吗?还是表示每次都会随机生成一个新的ID呢? - decezesession_regenerate_id(true)
。 - user2560539