>백엔드 개발 >PHP 문제 >PHP가 쿠키 문제 처리를 얻을 수 없습니다.

PHP가 쿠키 문제 처리를 얻을 수 없습니다.

卡哇伊
卡哇伊원래의
2020-07-06 10:11:513034검색

PHP가 쿠키를 얻을 수 없는 문제를 처리하는 방법: 먼저 키 a와 값 값으로 쿠키를 설정한 다음 쿠키 문자열에서 쿠키를 검색하고 해당 값을 반환합니다. 마지막으로 브라우저를 새로 고치고 액세스합니다. a=value가 하나 더 있습니다.

PHP가 쿠키 문제 처리를 얻을 수 없습니다.

문제 내용

먼저 다음과 같은 간단한 코드를 작성합니다.

코드는 다음과 같습니다.

<?php 
    setcookie(&#39;a&#39;,&#39;value&#39;);
    print $_COOKIE[&#39;a&#39;];

처음 방문 시 오류가 발생합니다.

이유 오류는 $_COOKIE[ 'a' 값]이 존재하지 않습니다. 두 번째 방문: value$_COOKIE['a']的值不存在。第二次访问:value

相关学习推荐:<a href="https://www.php.cn/course/list/29/type/2.html" target="_blank">php视频教程</a><br>

:为什么第一次访问的时候,会没有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']

관련 학습 권장사항: <a href="https://www.php.cn/course/list/29/type/2.html" target="_blank">PHP 비디오 튜토리얼</a><p></p>

Q: 처음 방문할 때 왜 쿠키가 없나요? ? 먼저 설정하고 나서 받아야 하는 것 아닌가요? ? 답변: "네트워크"를 보려면 firefox의 firebug를 사용하십시오:

🎜🎜🎜클라이언트:🎜🎜브라우저(클라이언트)가 서버에 요청을 보내는 것을 볼 수 있습니다. 요청을 하면 제가 다양한 매개변수를 업로드하고 어떤 종류의 텍스트를 받고 싶은지(Accept), 어떤 인코딩 형식(Accept-Encoding), 어떤 언어(Accept-Language) 등을 서버에 알려주고, 물론 쿠키도 서버에 전달합니다(Cookie ). . 🎜🎜서버 측:🎜🎜1단계: setcookie('a','value')🎜🎜쿠키가 클라이언트에 설정되어 있기 때문에 setcookie 함수 자체는 쿠키를 설정하려면 헤더 정보를 통해서만 브라우저에 알릴 수 있습니다. 형님, 쿠키를 설정하고 싶습니다. 키는 a이고 값은 value입니다. 거기에서 설정하는 데 도움을 주시면 됩니다. 또한 다음과 같이 이해할 수도 있습니다. "오세요. 오늘은 행복합니다. 쿠키를 드리겠습니다." 🎜🎜2단계: $_COOKIE['a']$_COOKIE['a']🎜🎜작업은 브라우저가 가져온 쿠키 문자열에서 키 a를 검색하는 것입니다. .쿠키를 사용하여 해당 값을 반환합니다. 🎜🎜🎜🎜분명히 이 "키는"입니다. 클라이언트가 서버에 접속했을 때 쿠키가 전혀 존재하지 않고, 이전 단계에서 설정한 쿠키의 헤더 정보가 아직 클라이언트에 반환되지 않았기 때문에 쿠키를 찾는 것이 불가능합니다(php에서 해당 명령문을 실행해야 함). 위에서 아래로 클라이언트에 반환됩니다)🎜🎜3단계: 서버가 정보를 반환합니다🎜🎜그 중 반환된 헤더 정보에는 Set-Cookie a=value가 포함되어 있습니다. 정보와 쿠키는 귀하의 컴퓨터에 있는 파일에 저장됩니다. 쿠키 저장 위치는 브라우저마다 다른 것 같습니다. 이는 이 기사의 범위를 벗어납니다. 🎜

🎜🎜브라우저를 새로 고치고 서버에 다시 접속하세요. 많은 헤더 정보도 서버로 전송되지만 이번에는 쿠키에 a=value가 하나 더 있습니다. 따라서 $_COOKIE['a']는 쿠키 문자열에서 키 a를 사용하여 자연스럽게 쿠키의 값을 찾을 수 있습니다. 🎜🎜🎜🎜🎜🎜 🎜🎜🎜

위 내용은 PHP가 쿠키 문제 처리를 얻을 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.