【问题标题】:Cookies in PHP when i change password当我更改密码时 PHP 中的 Cookie
【发布时间】:2014-09-24 03:36:57
【问题描述】:

我正在为网站使用 Cookie,这对我来说很好用。我没有为我的网站使用 Session 。问题是

我从一台计算机登录。我从同一帐户登录另一台计算机或浏览器。

我在第二台计算机上更改了密码,但它一直在我的第一台计算机上记录我。

如果我从第二台计算机更改密码,有什么方法可以停止从我的第一台计算机登录。

我正在存储这些信息

$expire=time()+3600*24*30;
$useraccesstoken=$_POST['user_access_token'];
$userid=$_POST['user_id'];
setcookie("user_access_token", $useraccesstoken, $expire);
setcookie("user_id", $userid, $expire);

对于注销我正在使用

这个

$expire=time()-3600*24*30;
setcookie("user_access_token","", $expire);
setcookie("user_id","", $expire);

谢谢

【问题讨论】:

  • 请告诉我您没有将登录凭据存储在 cookie 中。请。
  • @Kamalpreet 你如何检查用户是否登录?
  • user_id 是否存在

标签: php cookies


【解决方案1】:

首先,您没有使用正确的登录方法,您应该使用会话,原因有两个

  1. Cookie 存储在浏览器中
  2. 虽然会话存储在服务器中,因此任何人都无法更改会话数据。

让我们以一个案例场景为例,您有两种类型的登录,一种用于使用,另一种用于管理员,普通用户可以更改 cookie 并轻松成为管理员。 您应该只在 cookie 中存储那些不用于安全性的值,例如上次登录时间最后查看的项目或类似的东西

现在来解决您的问题您已经在第一台计算机上存储了一些 cookie 很长时间可能是 1 天,并且您已经更改了另一台计算机上的密码,但第一台计算机中的 cookie 已经存在,这就是您登录的原因。 您必须先销毁cookie,否则您将无法在没有新密码的情况下登录。

重要永远不要在 COOKIE 中存储登录凭据或任何机密信息

您还应该看到 storing-session-data-in-cookies

【讨论】:

    【解决方案2】:

    这取决于您在 cookie 中存储的内容。

    假设当我登录时,您创建了一个包含我的用户名的 cookie。没有会话控制,所以一切都取决于这个 cookie。所以只要我有cookie,我不关心密码更改。

    假设您将用户名和密码存储在 cookie 中。我猜你没有。如果您确实存储了两者并在更改密码后仍然登录,则您的代码一定有错误。

    如果您也没有存储密码,我想您可以通过比较 cookie 创建日期和密码更改日期来控制这一点。如果 cookie 创建日期

    长话短说,不要在这类事情上使用 cookie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-25
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 2015-07-29
      • 1970-01-01
      • 2014-06-11
      相关资源
      最近更新 更多