php设置会话与cookie

时间:2013-02-12 13:15:31

标签: php session cookies

$_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;
}

我有会话,但我也想包括COOKIE,但我不知道如何用COOKIE重启SESSION。我不知道如何才能做到这一点。我创建了COOKIE但是无法注销并且对SESSION有问题有人可以帮我修复我的问题????在顶部的每个页面中,我都有login_in函数用于检查用户是否登录,我想知道这些logged_in函数是否检查用户是否有cookie来自动登录用户cookie。我认为它在logged_in函数中必须编写一些代码并且......

3 个答案:

答案 0 :(得分: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;
}

编辑:添加了注销() - 会删除会话和Cookie'user_id',然后重定向到主页

答案 1 :(得分:1)

首先:你应该用:

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

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

删除cookie是通过设置负时间值来完成的:

setcookie('user_id', '' , time()-86000);

答案 2 :(得分: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'])));
}