【问题标题】:create cookies with session php?使用会话 php 创建 cookie?
【发布时间】:2016-02-26 06:46:43
【问题描述】:

我使用会话来登录我网站中的用户。 问题是,我想让用户输入remember 密码,所以关闭/打开浏览器后他们不需要再次登录。

我需要使用带有会话的 cookie 来制作它吗?

我的代码:

$user = $_POST['user'];
$pass = $_POST['pass'];

$stmt = $mysqli->prepare("SELECT id, user, pass FROM users WHERE user = ?");
$stmt->bind_param('s', $user);
$stmt->execute();
$stmt->bind_result($id, $user, $pass2);
$stmt->fetch();
$stmt->close();

if (password_verify($pass, $pass2)) {

    session_start();
    $_SESSION["user"]   = $user;

    setcookie("user", $user, time()+3600000); // set the cookie and next?


}

所以我设置了 cookie 然后呢?下次如何登录用户?我应该检查 session['user'] 是否为空并且他们session = cookie value

【问题讨论】:

    标签: php session cookies


    【解决方案1】:

    默认情况下,当我们设置会话数据时,会在客户端的浏览器中保存会话 cookie。因此,如果您想在用户关闭浏览器后保持登录状态,也许您可​​以考虑使用 php.ini session.cookie_lifetime 指令来指定会话 cookie 的生命周期(以秒为单位)。

    或者您也可以使用session_set_cookie_params 函数。它提供了$lifetime 参数来设置cookie 的生命周期。

    例如,永久保留会话 cookie:

    <?php
    
    session_set_cookie_params(0);
    session_start();
    

    【讨论】:

    • 很好,但是关闭/打开浏览器后它会记住用户吗?我会试试!谢谢
    【解决方案2】:

    在这种情况下,基本想法是在用户登录期间生成一些随机哈希并将其保存在用户表中以供登录用户使用,同时创建名称为 login_hash 的 cookie 作为值集生成 has 和下次用户登录时检查login_hash 是否存在并且它与数据库中的某个用户匹配,然后使用该用户登录。

    【讨论】:

    • 哦,我明白了!所以我将在这个cookie中创建一个登录hash id并将这个id保存在mysql中,如果cookie id与某个用户id hash =再次登录匹配。谢谢!
    • 是的,这是基本示例,但您可以在此处查看更难和更安全的匹配方式:stackoverflow.com/questions/244882/… 了解更多详情
    猜你喜欢
    • 2014-08-27
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2017-03-30
    相关资源
    最近更新 更多