我有以下 PHP 函数:
function validateUser($username){
session_regenerate_id ();
$_SESSION['valid'] = 1;
$_SESSION['username'] = $username;
setcookie('username2',$username,time()+60*60*24*365);
header("Location: ../new.php");
}
然后我获取 cookie:
echo $_COOKIE['username2']; exit();
(我只放了 exit()
用于调试)
唯一的问题,它是空白的。有任何想法吗?
更新: 这是调用函数的方式:
if(mysql_num_rows($queryreg) != 0){
$row = mysql_fetch_array($queryreg,MYSQL_ASSOC);
$hash = hash('sha256', $row['salt'] . hash('sha256', $password));
if($hash == $row['password']) {
if($row['confirm'] == 1){
if(isset($remember)){
setcookie('username',$username,time()+60*60*24*365);
setcookie('password',$password,time()+60*60*24*365);
} else {
setcookie('username','',time()-3600);
setcookie('password','',time()-3600);
}
validateUser($username);
我没有包括所有 if()
语句以节省一些空间。
原文由 Jason 发布,翻译遵循 CC BY-SA 4.0 许可协议
[在 XAMPP for PHP 8.0.19 中测试的解决方案] 我修改了文件 php.ini 并设置了
session.auto_start=1
。请记住,每次此函数出现在我的代码中,每个文件中时,我都会在 session_start() 之前调用session_set_cookie_params([param => value])
。session.auto_star
:在请求启动时初始化会话。http://php.net/session.auto-start
仍在研究和分析其原因和功能,这是一种意外。可能不是最安全的解决方案。