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

时间:2013-10-06 10:05:20

标签: php cookies

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

用户已登录 - >我用他们的id设置为cookies - >他们关闭了浏览器 - >然后当他们回来时,主页检测是否有饼干 - >如果是,请重新登录用户..

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

3 个答案:

答案 0 :(得分:0)

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

在互联网上有关于此的很多资源。请记住,甚至这种方式并非绝对防弹,许多网站都会要求您重新输入密码以执行极其重要的操作(例如更改登录凭据,信用卡号等)。您应该从不信任完全使用cookie进行身份验证的用户。

EG。你可以让他看到好像他正常登录的东西,但不要让他更改他的密码/电子邮件而不重新确认旧密码/电子邮件。

答案 1 :(得分:0)

转到session而不是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";
}

答案 2 :(得分:0)

Cookie不安全,其中一个主要原因是到期日期是在您的系统日期计算的。

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

$_SESSION['created'] = time();
$_SESSION['last_activity'] = time();

为您网站中的每个页面调用以下代码。这将在$ session_expire秒后自动使会话失效,并保护您免受SESSION FIXATION attacks

的影响
$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();
        }
    }
}