Php 检测用户是否登录时会话与cookie

Php 检测用户是否登录时会话与cookie,php,cookies,Php,Cookies,如何在注册和登录阶段使用cookie 用户登录->我使用他们的id设置为Cookie->他们关闭浏览器->然后当他们回来时,主页检测是否有Cookie->如果是,请登录用户返回 听起来不对,因为我还需要将用户名和密码存储为cookies Cookies存储在客户机上,可以轻松操作。因此,请使用会话。 对于“记住我”功能,您应该将令牌存储在cookie中,并在用户每次使用它登录时使其无效。此外,请确保设置了合理的过期时间 互联网上有很多关于这方面的资源。请记住,即使是这种方式也不是绝对可靠的,许多

如何在注册和登录阶段使用cookie

用户登录->我使用他们的id设置为Cookie->他们关闭浏览器->然后当他们回来时,主页检测是否有Cookie->如果是,请登录用户返回


听起来不对,因为我还需要将用户名和密码存储为cookies

Cookies存储在客户机上,可以轻松操作。因此,请使用会话。 对于“记住我”功能,您应该将令牌存储在cookie中,并在用户每次使用它登录时使其无效。此外,请确保设置了合理的过期时间

互联网上有很多关于这方面的资源。请记住,即使是这种方式也不是绝对可靠的,许多网站会要求您重新键入密码以执行极其重要的操作(如更改登录凭据、信用卡号码等)。您应该永远不要完全信任使用cookie进行身份验证的用户


你可以让他像正常登录一样查看内容,但不要让他在不重新确认旧密码/电子邮件的情况下更改密码/电子邮件。

使用
会话
而不是
cookies

这里有一个简单的例子

<?php
session_start();
if(!isset($_SESSION['user']))
{
echo "Hi this is your first time. Enjoy the stay";
$_SESSION['user']='set';
}
else
{
echo "Thanks for coming back";
}

Cookie是不安全的,主要原因之一是过期日期是根据您的系统日期计算的

验证用户凭据后,使用此代码对其进行身份验证

$_SESSION['created'] = time();
$_SESSION['last_activity'] = time();
为网站中的每个页面调用以下代码。这将在$session\u过期秒后自动使会话过期,并保护您免受


永远不要在cookie中存储用户名和密码@IgorPantović除非用户清除他的cookie,否则它将工作。@Igor这完全取决于会话cookie的配置。我犯了一个可怕的错误。“我的观点是正确的,你们两个似乎是绝对正确的。”安德烈·丹尼尔如果用户清除cookies,会发生什么?您的代码是关于会话的,我知道无法通过浏览器清除?@KaitlynSacco会话仍然使用cookies,因此如果用户清除cookies,他的会话将丢失,他需要再次登录。
$session_expire = 3600;

// Check if user is online
if(isset($_SESSION['created']) && $_SESSION['created']) {
    // If the last request has been done before 'session_expire' seconds ago, we've to destroy this SESSION
    if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > $session_expire)) {
        // logout the user          
        session_unset();
        session_destroy();
    } else {
        // Update the last activity timestamp
        $_SESSION['last_activity'] = time();

        // Prevention from session fixation attacks
        if (time() - $_SESSION['created'] > $session_expire) {

            // Regenerating session_id
            session_regenerate_id(true);

            // Updating creation time
            $_SESSION['created'] = time();
        }
    }
}