我正在运行一个登录脚本,它使用user_id
设置一个会话,并且它完美无缺。但是我还想设置一个cookie,如果用户选中了记住我的复选框,我为其分配了一个变量$remember = $_POST['remember'];
,但cookie没有设置。如果我检查记住我的框,它只会启动会话,但是当我退出浏览器并返回时,我必须再次登录,这表明cookie未设置。现在,我使用user_id
存储了会话,并使用user_name
存储了Cookie。我不认为html部分是相关的,我的登录验证来自数据库,因为它们工作正常并且所有变量都已分配,所以这里是设置会话和cookie的代码:
if($password == $pass_word){
session_start();
$_SESSION['user_id'] = $user_id;
if($remember == "on"){
setcookie("user_name", $user_name, time()+2592000);
}
}
这是我的loggedin()
功能:
function loggedin(){
if((isset($_SESSION['user_id'])) || ((isset($_COOKIE['user_name'])) && (isset($_SESSION['user_id'])))){
return true;
} else {
return false;
}
}
但它只设置没有cookie的会话。请问我出错了什么。
答案 0 :(得分:0)
我修好了。 cookie
已设置,但如果浏览器已关闭,我必须重新启动session
,这是我的解决方案
// db connection here
function loggedin(){
if(isset($_SESSION['user_id']){
return true;
} else if(isset($_COOKIE['user_name']){
$query = mysqli_query($con, "SELECT id FROM users WHERE user_name='". $_COOKIE['user_name']."'");
$sql = mysqli_fetch_array($query);
$_SESSION['user_id'] = $sql['id'];
return true;
} else {
return false;
}
}