2011-06-08 175 views
2

我试图在标题重定向之前设置一个cookie,但它不起作用。我已经阅读过在标题重定向行应该解决问题之后设置cookie,但我没有运气。同样,这里的帖子先前建议如果您在位置重定向中使用了“人员网址”,则应在Cookie的路径参数中使用“/”。这也是没有运气的。在重定向之前设置cookie

header("Location: $url" . $params); 
setcookie('cartstlang', 'lang', 0, '/', '', FALSE, FALSE); 
setcookie('cartstdb', 'db', 0, '/', '', FALSE, FALSE); 

另请注意,我已经通过注释掉标题重定向然后单击链接来更改页面来测试此操作。这些cookies在var_dump()上显得很好。

我使用PHP 5.3+在XAMPP上开发。我已经在IE 8和Firefox 4中测试过。

任何帮助都会很棒。谢谢。

+1

听到行应该在setcookie之后 – 2011-06-08 09:59:07

+1

我也听到了相反的意思。无论哪种方式,我都尝试了setcookie调用之前和之后的头部。 – Pete171 2011-06-08 10:00:48

+0

这是一个声明,该命令应该是标题 - > setcookie:http://www.php.net/manual/en/function.setcookie.php#96251 – joshuahedlund 2011-12-15 16:50:58

回答

2

setcookie代码应该在header代码之前,并确保在执行停止任何输出后执行exit()

你是否确定它会进入同一个域名(http://site.comhttp://www.site.com之间有区别)?尝试在setcookie中将域选项设置为.site.com,以便可以在所有子域中访问它。

+0

实际上,标题重定向完全转到不同的域。在经过一些处理后,它会重定向到我的域,然后是我尝试使用cookie。 我不能在重定向之后包含exit(),因为它包含的函数必须返回TRUE才能运行其他重要的脚本。我无法控制这个;我正在编写一个插件,不能更改核心功能。 – Pete171 2011-06-08 10:14:54

+0

那么你需要进一步调试。在重定向之前检查cookie是否在浏览器中设置,然后转到页面,它会将您带回并检查cookie是否存在。 – fire 2011-06-08 10:45:14

+0

我检查过cookie没有重定向,并且我也确定cookie不在我需要的页面上。 – Pete171 2011-06-08 11:09:16

1

试试这个

$value = 'something from somewhere'; 

setcookie("TestCookie", $value); 




echo $_COOKIE["TestCookie"]; 
echo $HTTP_COOKIE_VARS["TestCookie"]; 

// Another way to debug/test is to view all cookies 
print_r($_COOKIE); 

和后回你怎么看的答复。还要确保启用了Cookie。

+0

注意:未定义的索引:第3行中的.... \ waiting.php中的TestCookie注意:未定义的变量:第3行中的... \ waiting.php中的HTTP_COOKIE_VARS。 Cookie已启用;他们设置好,而不尝试重新标题。 – Pete171 2011-06-08 11:08:30

+0

忽略以上,忘记刷新。 东西从某处 注意:未定义的变量:第2行中的C:\ xampp \ htdocs \ joomla_and_vm \ waiting.php中的HTTP_COOKIE_VAR Cookie被明确设置。谢谢回复。 – Pete171 2011-06-08 11:14:23

相关问题