PHP设置cookie的问题
我设置一个cookie在本地主机上使用以下语法PHP设置cookie的问题
setcookie("testCookie ", "hello cookie", false, "/", false);
的问题是我第一次访问创建的cookie的网页和萤火虫显示
Cookie testCookie added. hello cookie
但它没有读取价值。如果我刷新页面,值被读取和消防错误显示
Cookie testCookie changed. hello cookie
我怎样才能被读取cookie的值首次加载页面?
正如我p在我的评论中,从你的描述中(尽管相当模糊并且不太理解),我认为这个问题可能是你在尝试读取cookie发送到服务器之前。
一个cookie的工作方式如下:
- 您提出请求
- 服务器发送cookie头回客户端
- 的网页加载 - 曲奇不可见PHP这个网页上负载
- 刷新
- 客户端发送的cookie头到服务器
- 服务器RE CEIVES cookie头,因此PHP可以读取它
- 页面加载 - 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。
TNX人设定值手动的工作! – Rafay 2011-05-09 11:23:14
没有问题,只是用一个更好的解决方法上传我的答案! :-) – 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'
TNX的答复,起初我无法设置cookie在localhost因此搜索得到这个代码:)以后我会解决它... – Rafay 2011-05-09 11:24:16
什么是你的代码来检测该cookie是要么添加或更改?同样为了获得cookie的值,在第一页加载之后将不显示它,它将在第二次刷新后显示。 – 2011-05-09 11:14:50
这是我的问题,为什么它不显示在第一页加载/我能做些什么来读取cookie的价值第一次? – Rafay 2011-05-09 11:17:14
看到我的答案应该解释它是如何工作的。 – 2011-05-09 11:18:43