4
$_SESSION['user_id'] = $login;  
setcookie('user_id', '$login' , time()+86000);
header('Location: userindex.php');

function logged_in() {
return (isset($_SESSION['user_id']) || isset($_COOKIE['user_id']) ? true : false;
}

我有 SESSION,但我也不想包含 COOKIE,但我不知道如何使用 COOKIE 重新启动 SESSION。我不知道我怎么能得到那个。我创建了 COOKIE,但无法注销并且遇到了 SESSION 问题,有人可以帮我解决我的问题????在顶部的每个页面中,我都有 login_in 函数来检查用户是否已登录,我不会使用这些 logged_in 函数来检查用户是否有 cookie 来自动登录到用户 cookie。我认为它在logged_in函数中必须编写一些代码并且......

4

3 回答 3

3

我会注意到这是不安全的,因为任何人都可以使用 firebug 之类的东西创建 cookie。

@session_start();

function logged_in() {
    if(!isset($_SESSION['user_id']) && isset($_COOKIE['user_id'])) {
        $_SESSION['user_id'] = $_COOKIE['user_id'];
    }
    return isset($_SESSION['user_id']);
}

function logout() {
    unset($_SESSION['user_id']);
    setcookie("user_id", "", time() - 3600);
    header("Location: http://".$_SERVER['HTTP_HOST']);
    exit;
}

编辑:添加 logout() - 将删除会话和 cookie 'user_id',然后重定向到主页

于 2013-02-12T13:28:24.570 回答
1

首先:你应该设置它:

setcookie('user_id', $login , time()+86000);

所以 $login 不带引号。如果应该在不同的页面中看到这个 cookie,也可以设置路径变量。

通过设置负时间值来删除 cookie:

setcookie('user_id', '' , time()-86000);
于 2013-02-12T13:29:18.983 回答
0
session_start();

function logged_in() {

    if(!isset($_SESSION['user_id']) && isset($_COOKIE['user_id'])) {

        $_SESSION['user_id'] = $_COOKIE['user_id'];
    }

    return (isset($_SESSION['user_id'])) && isset($_COOKIE['user_id'])));
}
于 2013-02-12T13:41:50.310 回答