【问题标题】:Setcookie is not creating cookieSetcookie 没有创建 cookie
【发布时间】:2016-02-16 23:00:21
【问题描述】:

我的登录似乎没有创建 cookie。表单一直到脚本的 cookie 创建部分,甚至会回显 cookie 已创建但实际上并未创建。

这是我的代码的 cookie 部分:

if (!$error) {

    if (isset($_POST['rememberme'])) {
        setcookie('guruemail', $loginemail, time() + 86400 * 365, '/', NULL);
        setcookie('gurupassword',  md5($loginpassword), time() + 86400 * 365, '/', NULL);
echo "Long-term cookie made";
        } else {
        setcookie('guruemail', $loginemail, false, '/', NULL);
        setcookie('gurupassword',  md5($loginpassword), false, '/', NULL);
echo "Short-term cookie made";
    }

}

可以在http://protein.guru/signin.phtml访问登录

cookie测试可以查看:http://protein.guru/testcookie.php

这是 cookietest 代码:

<?php
echo "Value is: " . $_COOKIE[$guruemail];
echo "Value is: " . $_COOKIE[$gurupassword];
?>

登录:

我正在使用电子邮件:tester3651@outlook.com

密码是:肉饼

注意:可能是新手错误? -- 我没有 session_start();在任一代码中的任何位置。不知道我是否需要直接 cookie 登录。

任何反馈都将不胜感激。谢谢大家。

【问题讨论】:

  • 您永远不应将登录凭据存储在 cookie 中。
  • 使用 $_SESSION 而不是 $_COOKIE 否则你会要求一个糟糕的时间。

标签: php cookies


【解决方案1】:

如 cmets 中所述: 使用字符串而不是变量访问 $_COOKIE 数组。

<?php
    echo "Value is: " . $_COOKIE['guruemail'];
    echo "Value is: " . $_COOKIE['gurupassword'];
?>

【讨论】:

  • 我看了几眼才知道你的回答有什么不同。 FWIW,提到用字符串替换变量可能很有用
  • 完美运行。非常感谢……不敢相信这么简单。
【解决方案2】:

您需要在 cookie 变量周围加上引号

<?php
echo "Value is: " . $_COOKIE['guruemail'];
echo "Value is: " . $_COOKIE['gurupassword'];
?>

实际上使用$_SESSION代替用户登录会更安全,因为用户可以手动设置$_COOKIE

更多详情请看以下答案:Making login more secure

【讨论】:

  • +1 获取信息。我会查看会话,但我会检查带有加盐密码等的数据库的 cookie。对于我正在做的事情应该没问题,但我确实对禁用 cookie 的人有些担心。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 2017-05-18
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多