【问题标题】:php cookie not setting after logging out退出后未设置php cookie
【发布时间】:2015-01-07 08:28:56
【问题描述】:

我正在创建一个可以让一些用户登录的网站。我让我的代码创建了一个简单的 cookie。早些时候我的代码正在工作并创建一个cookie并允许用户登录。但是,在我创建了一个注销按钮并使用它之后,我似乎无法再次创建一个cookie(我的网站无法识别cookie并且没有当我检查时,cookie 会以 chrome 显示)。我已经查看了有关创建 cookie 并且无法创建 cookie 的所有其他线程,但我不知道出了什么问题。

这是我创建 cookie 的代码:

$userStuff = array('name' => $username,'password' => $password);
$date_of_expiry = time() + 60 * 60 * 24 * 1 ;
setcookie( "user", $userStuff, $date_of_expiry, "/" ) ;

我知道安全性非常松懈,我不应该将密码等直接存储在 cookie 中,但我想先处理其他事情。此代码位于任何 html 之前。

这是我将 cookie 的到期日期更改为注销的代码:

setcookie('user', $userStuff, time() - 3600, '/');

【问题讨论】:

  • 将注销时的过期时间设置为过去的日期
  • 发现问题。 PHP 决定它不想在 cookie 中使用数组...

标签: php cookies login


【解决方案1】:

你好吗?

如果你想删除一个cookie,你应该传递一个过去的日期,例如:

setcookie('user', $userStaff, time() - 3600, '/');

问候。

【讨论】:

  • 对不起,这实际上是我所做的。我不小心粘贴了我的新代码,我试图在那里重置过期日期,看看我是否可以重新创建 cookie。
【解决方案2】:

我知道这有点离题,但为什么不使用$_SESSION?它在您的客户端浏览器中存储一个带有会话令牌的 cookie(当您运行 session_start 时),并且大部分数据都存储在服务器端,这更加安全。对于用户身份验证数据和令牌,这可能是更好的选择。

例子:

//First thing init the session
session_start(); 

$_SESSION['username'] = $username;
$_SESSION['password'] = $password;

//Or retreive the data...

$username = $_SESSION['username'];

//Later when you want to log out just destroy the session:
session_destroy();  

【讨论】:

    【解决方案3】:

    我发现了错误。显然,您要么不能在 cookie 中使用数组,要么这次它不允许我在 cookie 中使用数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多