【问题标题】:PHP Cookies using Variable from URL使用来自 URL 的变量的 PHP Cookie
【发布时间】:2011-09-08 10:07:59
【问题描述】:

我不是 PHP 专家,我正在尝试设置一个包含来自 URL 的引荐来源代码的 cookie。例如:www.example.com?promotioncode=google 应该设置一个 cookie 名称促销代码,值 = 和 6 个月到期之后的值。

我可以使用

检索促销代码
$_GET['promotioncode']

但我似乎无法将其插入到 cookie 字符串中。我尝试了几种方法:

$id = 'promo';
$value = $_GET['promotioncode'];
$time = time()+60*60*24*180;
setcookie($id, $value, $time);

$id = 'promo';
$time = time()+60*60*24*180;
setcookie($id, $_GET['promotioncode'], $time);

但它不起作用。如果我使用单词或数字作为 cookie 值,那么 cookie 设置没有问题。

我错过了什么/做错了什么?

【问题讨论】:

  • 你检查了HTTP响应头吗?由于标头已经发送,您设置 cookie 的尝试可能会失败。你检查你的错误日志了吗?
  • 这实际上是在 magento 安装上,它的添加方式与 magento 生成的其他 cookie 相同。如果我将值设置为 123 它工作正常,问题是通过参数来自网址。
  • 该代码应该可以工作,并且在这里也可以工作。你怎么知道它不起作用?你检查 cookie 还是检查 setcookie() 的返回值?您是否转储了 $_GET 的内容?有什么奇怪的吗?

标签: php url cookies parameter-passing


【解决方案1】:

简单的$string$_GET['key']没有区别,所以问题不可能是这个。

还要检查setcookie 的第四个参数

【讨论】:

    【解决方案2】:

    尝试添加

    if($_GET['promotioncode'])
        setcookie(.....)
    

    【讨论】:

      【解决方案3】:

      添加一个参数来定义 cookie 可用的服务器路径:

      setcookie($id, $value, $time, '/');
      

      它应该可以工作。

      【讨论】:

        【解决方案4】:

        $id = $_GET['promotioncode'];
        setcookie('促销码', $id, time()+60*30*24*3600 , '/' );

        【讨论】:

          【解决方案5】:

          试试这个:

          setcookie($id, "" . $value, $time);
          

          空白字符串 ("") 可能有助于阐明或设置 $value 的类型。引号基本上确保 $value 变量作为字符串参数传递给 setcookie 方法。

          【讨论】:

          • 这个答案出现在低质量审查队列中,大概是因为您没有提供任何代码解释。如果此代码回答了问题,请考虑在答案中添加一些解释代码的文本。这样一来,您就更有可能获得更多支持,并帮助提问者学习新知识。
          猜你喜欢
          • 1970-01-01
          • 2012-09-11
          • 1970-01-01
          • 2017-07-02
          • 1970-01-01
          • 1970-01-01
          • 2016-03-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多