当前位置: 首页 > 编程笔记 >

php第一次无法获取cookie问题处理

路阳华
2023-03-14
本文向大家介绍php第一次无法获取cookie问题处理,包括了php第一次无法获取cookie问题处理的使用技巧和注意事项,需要的朋友参考一下

首先编写以下简单的代码:


<?php 

    setcookie('a','value');

    print $_COOKIE['a'];

第一次访问时,报错:

报错的原因是$_COOKIE['a']的值不存在。第二次访问:

问:为什么第一次访问的时候,会没有cookie呢??我不是先设置,再获取吗??

答:使用firefox的firebug查看”网络“:

客户端:

可以看到,浏览器(客户端)向服务器发出一次请求,发出请求的时候,在请求头信息中带上了各种参数,告诉服务器,我要接收什么样的文本(Accept)、什么编码格式(Accept-Encoding)、什么语言(Accept-Language)等等,当然,还把Cookie也传到了服务器(Cookie)。

服务器端:

第一步:setcookie('a','value')

因为cookie是设置在客户端的,setcookie函数自己并不能设置cookie,它只能通过头信息的方式告诉浏览器说:兄弟,我要设置一个cookie,键为a,值为value,你在你那里帮我设置一下。你也可以理解为:”来,朕今天高兴,赏你一个小甜饼“。

第二步:$_COOKIE['a']$_COOKIE['a']

很简单,执行的操作就是在浏览器带过来的cookie字符串中搜索键为a的cookie,并返回它的值。

很明显,这个”键为a“的cookie不可能找到,因为客户端访问服务器的时候,这个cookie压根就不存在,而前面第一步设置cookie的头信息,也还没有返回给客户端(php要从上到下把语句执行完才会返回给客户端)

第三步:服务器返回信息

其中,返回的头信息中带有”Set-Cookie a=value“,浏览器收到这个头信息,把cookie存放到电脑的某个文件中,对于不同浏览器cookie的存放位置貌似不同,这个不在本文的范围。


刷新浏览器,再次访问服务器的时候,同样,也会把很多头信息带给服务器,只不过这次带过去的cookie中,就多了一个a=value了。所心$_COOKIE['a']自然就能从cookie字符串中找到这个键为a的cookie的值。

 类似资料:
  • 我正在尝试使用react-native-NFC-Manager在我的react-本机应用程序中添加NFC功能,它工作正常。但问题是我第一次无法读取/写入NFC卡。第一次,我需要使用NFC工具应用程序编写一个新标签,将“NdeFormatable”转换为“Ndef”,否则我无法读取/写入NFC卡 我用这段代码写数据: 这个问题有什么解决办法吗?

  • thinkphp6 无法获取到url里的参数 用的是docker 部署的 nginx +php 7.4.33 在我的测试环境没有问题 放到另一个服务器里就获取不到参数了 伪静态是这个: 测试了是可以访问到index.php的 而且用index.php?a=b这样是可以获取到参数a的 但是我用index.php?s=aa就获取不到了

  • 问题内容: 为什么如果我在www.example.com上创建cookie并在example.com上进行检查,为什么该cookie不存在?我打算只使用将非www重定向到www域。但是我该如何解决呢? 问题答案: 浏览器是这里的罪魁祸首,而不是PHP。它们按域存储,不知道这是特例。从他们的角度,并有不同的字符串,因此具有不同的安全策略。但是,您可以做一些事情。 设置cookie时,请使用(带前导点

  • 在Android中首次尝试构建时出错 能够进行网络连接。但是这个错误仍然存在。 @Gautam Surani找不到要关闭的复选框 @Prasad Bonthu我认为代理设置很好。 原因:找不到指向所请求目标的有效证书路径 也得到 无法获取“http://jcenter.bintray.com/com/android/tools/build/gradle-core/2.2.3/gradle-core

  • 本文向大家介绍解决spring 处理request.getInputStream()输入流只能读取一次问题,包括了解决spring 处理request.getInputStream()输入流只能读取一次问题的使用技巧和注意事项,需要的朋友参考一下 一般我们会在InterceptorAdapter拦截器中对请求进行验证 正常普通接口请求,request.getParameter()可以获取,能多次读

  • 2.Github使用代码https://reduxapp.herokuapp.com/auth/callback?code=9536286A59228E7784A1重定向回来,并触发githubSendCode('9536286A59228E7784A1')操作 你可以在网络呼叫选项中看到呼叫是通过的,但POST呼叫从来没有发生过。然后出现控制台错误: 下面是我的操作函数: