为什么我不能在PHP上设置cookie?

时间:2015-05-01 04:35:39

标签: php cookies setcookie

我遇到了cookie的问题,我可以解决它......

我已经阅读了一些教程,但我仍然无法创建一个cookie ......

嗯......我正在尝试创建一个推荐系统,它会在最后为我的用户提供一个& id = number的链接。 (这个数字与他们的账户有关,所以我可以在以后识别并给予奖励。)

我尝试了很多方法,比如:

 setcookie('ref', $c_value, time()+86400, '.mydomain.com', '/');
 setcookie('ref', $c_value, time()+86400, '/', '.mydomain.com');
 setcookie('ref', 'test', time()+86400, '/', '.mydomain.com');
 setcookie('ref', 'test', time()+86400, '/', '.mydomain.com');
 setcookie('ref', 'test', time()+86400, '/', 'www.mydomain.com');

 $time = time()+86400; setcookie('ref', 'test', '$time', '/', 'www.mydomain.com/');

PS:我已经分别试过了。

但是它们似乎都没有用,我是否必须打开php.ini上的某些功能?

我试图将此代码实现为:

 if(!empty($_GET['id'])){
    $c_value = $_GET['id'];     
    setcookie('ref', $c_value, time()+86400, '/', '.mydomain.com');
 }

我也试过没有$ _GET函数,但不管我做什么,它都不起作用......

PS2:我使用谷歌分析和Facebook插件,也创建cookie,他们干扰什么?我也在使用SESSIONID。

1 个答案:

答案 0 :(得分:1)

setcookie通过在响应正文之前发送HTTP标头来工作。在您输出正文中的任何内容之前,必须先调用发送标题的所有函数(例如setcookiesession_startheader)。

因此,要么先在脚本中移动setcookie()函数,要么使用输出缓冲函数缓冲输出,直到调用它为止。