Cookie在同一页面中创建后不会打印

时间:2014-02-20 06:12:54

标签: php cookies

我创建了名为“test”的Cookie,其值为“one”,并在页面index.php

中包含以下代码
 <?php
 setcookie('test','one');
 echo $_COOKIE['test'];
 ?>

一旦我打开页面index.php,就不会打印Cookie,一旦刷新页面,就会打印出cookie(由于已创建cookie而打印)

我的问题是当我第一次运行页面index.php时创建cookie,一旦我打印出应该打印的cookie,那么

  

cookie在第一次运行中没有打印的原因是什么   本身?

4 个答案:

答案 0 :(得分:0)

  

我的问题是当我运行index.php页面时创建了cookie   第一次本身,一旦我打印饼干它应该打印,   然后

是的,第一次运行index.php时会创建cookie。

  

cookie在第一次运行中没有打印的原因是什么   本身?

设置好Cookie后,可以在下一页加载时使用$_COOKIE$HTTP_COOKIE_VARS数组访问这些Cookie。

Source

浏览链接以查看常见的陷阱..

常见陷阱:

  • Cookie会在下次加载可以看到Cookie的页面时显示。要测试cookie是否已成功设置,请在cookie过期前检查下一个加载页面上的cookie。过期时间通过expire参数设置。调试cookie存在的一种好方法是简单地调用print_r($_COOKIE);
  • 必须使用与设置相同的参数删除Cookie。如果value参数为空字符串或FALSE,并且所有其他参数与先前对setcookie的调用匹配,则将从远程客户端删除具有指定名称的cookie。这是通过将值设置为“已删除”并将到期时间设置为过去一年来实现的。
  • 因为设置值为FALSE的cookie会尝试删除cookie,所以不应该使用布尔值。相反,使用0表示FALSE,使用1表示TRUE。
  • Cookie名称可以设置为数组名称,并且可以作为数组用于PHP脚本,但单独的Cookie存储在用户的系统中。考虑explode()设置一个包含多个名称和值的cookie。建议不要将serialize()用于此目的,因为它可能会导致安全漏洞。

答案 1 :(得分:0)

setcookie('test','one');

会将http标头的下方添加到响应中,用于让浏览器设置cookie。

Set-Cookie: test=one ...

<小时/> 如果cookie在浏览器端设置,那么下次访问页面时,请求标题将包含以下内容:

Cookie: name=value; ...

此数据用于设置超级全局$_COOKIE,因此仅从第二次看到该值。

当您第一次告诉浏览器设置cookie时,请求标头中没有cookie数据,因此您将看不到该值。

答案 2 :(得分:0)

你的回答在于你自己的问题 这一行:
setCookie方法( '试验', '一个') - &GT;当您运行index.php时,PHP脚本会在您的浏览器中发送cookie并 SET ,因此,您的PHP脚本将无法读取值,因为它只需在第一次运行时设置你的cookie。

因此,只有在 SET 之后,当您第二次运行时,[由于此时cookie包含值],它是 READ 并由PHP打印脚本 希望明确的事情

答案 3 :(得分:0)

您所做的是创建Cookie并将其打印在同一页面中,Cookie无法打印在同一页面本身,因为用户可以加载下一页。您可以尝试在下一页打印cookie。

  <?php
  echo $_COOKIE['test'];
  ?>

您可以通过

存储Cookie
$a=$_COOKIE['test'];

将其存储在变量$ a中的目的是即使未设置cookie,cookie的值也将保持不变,但不应更改$ a的值。