1

PHP新手在这里,我不明白我在这里做错了什么。我正在尝试实现一个陈词滥调的记住我的功能,但我无法让 cookie 工作。我已经有一段时间了。

所有这些都包含在密码检查功能中,我完全能够登录和回显我的会话。但我似乎无法设置我的 cookie。我正在使用 MAMP。

if($_POST['_remember'] == 'true') {
    $cookie = $_SESSION['user']['id']. '-' .$_SESSION['user']['password']. '-' .$_SESSION['user']['timestamp'];
    setcookie('remedy', $cookie, time() +60*60*24*7, '/', 'localhosttest');
  } else {
    //destroy any previously set cookie
    setcookie('remedy', '', time() -60*60*24*7, '/', 'localhosttest');
  }

echo $_COOKIE['remedy'];

我真希望我能给你别的东西,但这就是我所拥有的。我是一名图形设计师和摄影师,这种逻辑甚至不在我的球场附近。我为模糊的标题道歉,如果我知道如何更具体,我会修复它。

另外,我的计划是在服务器上使用相同的值检查用户 ID、密码(散列和加盐)和时间戳。每当用户浏览网站时,时间戳值都会更新。这是好习惯吗?

4

4 回答 4

2

setcookie() 准备一个 cookie 与服务器响应一起发送给客户端。仅当客户端发送请求时才会填充 $_COOKIE 数组。

在您设置cookie() 之后,检查用户请求的下一页上的$_COOKIE 数组——您将看到您在前一页请求中创建的cookie。

请注意文档(http://php.net/manual/en/function.setcookie.php)中的“在下一页加载”:

一旦设置了 cookie,就可以在下一页加载时使用 $_COOKIE 或 $HTTP_COOKIE_VARS 数组访问它们。注意,像 $_COOKIE 这样的超全局变量在 PHP 4.1.0 中可用。Cookie 值也存在于 $_REQUEST 中。

于 2012-11-01T14:11:57.010 回答
1

您可以通过打开 crome 控制台 (F12) -> 资源 -> cookie -> yourSite 来检查您的 cookie 是否存在。

于 2012-11-01T14:17:29.690 回答
0

您的域是完全合格的域吗?域名通常需要有一个 . (点)在其中接受cookies。

于 2012-11-01T14:14:39.583 回答
0

有关 cookie 的答案,请查看 Rays answer。

我强烈建议您永远不要在客户端存储密码,因为存在一些安全风险:

  • 如果您使用 http 提供您的网页,您总是通过互联网发送未加密的密码
  • 间谍软件或同一台计算机的其他用户可以轻松找到用户凭据

你不能以完全安全的方式做到这一点。我建议您在 cookie 中仅存储一个随机散列,该散列也与用户凭据一起存储在数据库中。

于 2012-11-01T15:08:29.097 回答