PHP设置cookie的问题

问题描述:

我设置一个cookie在本地主机上使用以下语法PHP设置cookie的问题

setcookie("testCookie ", "hello cookie", false, "/", false); 

的问题是我第一次访问创建的cookie的网页和萤火虫显示

Cookie testCookie added. hello cookie 

但它没有读取价值。如果我刷新页面,值被读取和消防错误显示

Cookie testCookie changed. hello cookie 

我怎样才能被读取cookie的值首次加载页面?

+0

什么是你的代码来检测该cookie是要么添加或更改?同样为了获得cookie的值,在第一页加载之后将不显示它,它将在第二次刷新后显示。 – 2011-05-09 11:14:50

+0

这是我的问题,为什么它不显示在第一页加载/我能做些什么来读取cookie的价值第一次? – Rafay 2011-05-09 11:17:14

+0

看到我的答案应该解释它是如何工作的。 – 2011-05-09 11:18:43

正如我p在我的评论中,从你的描述中(尽管相当模糊并且不太理解),我认为这个问题可能是你在尝试读取cookie发送到服务器之前。

一个cookie的工作方式如下:

  1. 您提出请求
  2. 服务器发送cookie头回客户端
  3. 的网页加载 - 曲奇可见PHP这个网页上负载
  4. 刷新
  5. 客户端发送的cookie头到服务器
  6. 服务器RE CEIVES cookie头,因此PHP可以读取它
  7. 页面加载 - Cookie IS可见此处。

如果您还没有试过,请再次刷新!

由于您想在设置它的同时阅读它,只需存储您设置的值并使用它。或者(虽然这未经测试),您可以手动将其设置在$_COOKIE阵列中。

因此,像这样:

setcookie("helloworld", ..); 
$_COOKIE['helloworld'] = $value; 

然后就可以正常阅读。请注意,我不会推荐覆盖自动超全局的值($_REQUEST,$_POST$_GET等等)。),而是建议您只存储您正在设置和使用的值。


另一种方法是使用的“门户”,这意味着你要设置cookie的网关页面,那么这将继续为您重定向到下一个页面上的表单。

例如,假设你的流程如下:login.php - >account.php。而不是直接在account.php上登录您的登录表单,您有2个选项。

选项1:POST回login.php中,设置Cookie,然后重定向到account.php。 选项2:有一个网关,如logincheck.php,POST通过到,设置Cookie,然后重定向到account.php

这样,account.php总能看到你的cookie。

+0

TNX人设定值手动的工作! – Rafay 2011-05-09 11:23:14

+0

没有问题,只是用一个更好的解决方法上传我的答案! :-) – 2011-05-09 11:25:25

它可能是相关或不相关的,但是您将布尔值分配给期望整数或字符串的参数。如果您是PHP新手,仔细阅读本手册并了解功能签名非常重要。在这种情况下,你必须检查http://php.net/setcookie在那里你可以阅读:

布尔的setcookie(字符串$名称[, 字符串$值[摘要$到期= 0, 串$ PATH [,字符串$域[,布尔 $安全=假[,布尔$仅Http = 假]]]]]])

而且,我得到一个警告,当我运行代码:

Warning: Cookie names cannot contain any of the following '=,; \t\r\n\013\014' 
+0

TNX的答复,起初我无法设置cookie在localhost因此搜索得到这个代码:)以后我会解决它... – Rafay 2011-05-09 11:24:16