【问题标题】:php Cookie not working, won't get setphp Cookie 不工作,不会被设置
【发布时间】:2015-02-09 01:32:51
【问题描述】:

当我将表单提交给动作处理脚本时,我应该设置 cookie。但是 cookie 没有设置。

<input type="email" name="fes-email" class="fes-input" value="<?php echo $_COOKIE['hotspot-user-email']; ?>" placeholder="Еmail">

这可以在处理脚本页面上找到。

setcookie('hotspot-user-email', $_POST['fes-email'], time() + (86400 * 30), 'domain.tld'); 

我正在尝试将电子邮件地址保存在 cookie 中,以便下次用户返回该地址时将在输入字段中回显。

我的代码有问题吗?

if(!empty($_POST['fes-email'])) {

            if (filter_var($_POST['fes-email'], FILTER_VALIDATE_EMAIL)) {

                setcookie('hotspot-user-email', $_POST['fes-email'], time() + (86400 * 30), '/'); // 86400 = 1 day

            }else { echo("EMAIL IS NOT VALID"); }

        }else { echo("EMPTY FIELD"); }

【问题讨论】:

  • 您将 cookie 名称设置为“hotspot-user-email”,但将其检索为“uniroyal.mk-hotspot-user-email”。是否还有其他您未共享的代码 sn-p?另外,检查“setcookie”的返回值
  • @ghopst 我刚刚在此处发布时修改了名称。问题是没有设置cookie。当我进入 chrome cookie 并搜索它时,它不存在。
  • @ghopst 至于另一个剪断。并不真地。它包含在 if 语句中。这将验证电子邮件地址。如果电子邮件地址写得正确,它应该设置 cookie。但事实并非如此。
  • 请发布您的完整代码
  • @CodingHorror 那里张贴...

标签: php cookies


【解决方案1】:

您只为“domain.tld”设置了 cookie

请对该地址的所有页面测试此代码:

setcookie('hotspot-user-email', $_POST['fes-email'], time() + (86400 * 30), '/'); 

【讨论】:

  • 在我添加特定域之前就是这样...希望能解决问题。但没有。
  • 如果在 "domain.tld" 站点中生成 cookie 没有问题,但如果通过该域从另一个站点生成 cookie,则您无法访问
  • 它似乎没有设置cookie。使用指定的域或只是 /.
【解决方案2】:

以下是最简单的sn-p,可以发挥作用

<?php
  if (isset($_COOKIE['testCookie'])) {
      echo "<br/> Cookie is set: " . $_COOKIE['testCookie'] ." <br/>";
  } else {
      if (setcookie('testCookie','myemail@mydomain.com', time() + 86400)) {
          echo "<br/> cookie is set <br/>";
      }
  }
?>

【讨论】:

  • 你刷新页面了吗?我自己测试了它,它工作得很好。刷新时,您会看到“Cookie 已设置:myemail@mydomain.com”
猜你喜欢
  • 2013-07-14
  • 2019-02-26
  • 2012-11-07
  • 2017-09-28
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
相关资源
最近更新 更多