>  기사  >  백엔드 개발  >  javascript - PHP가 쿠키를 어떻게 받아들이고 어떤 기능이 관련되어 있는지 누가 말해 줄 수 있나요?

javascript - PHP가 쿠키를 어떻게 받아들이고 어떤 기능이 관련되어 있는지 누가 말해 줄 수 있나요?

WBOY
WBOY원래의
2016-12-01 00:56:39854검색

저는 비즈니스를 좋아하는 사람으로서 무엇을 해야 할지, 무엇을 배워야 할지 항상 궁금합니다.

이 쿠키에 무슨 일이 일어나는지 여쭤보고 싶습니다.
서버에서 상대방의 사용자 이름과 비밀번호를 확인한 후 암호화된 문자열을 반환하고 해당 문자열을 서버에 저장한다는 것인가요? 데이터 베이스.

이후 로그인 시에는 아이디와 비밀번호를 확인할 필요 없이 데이터베이스에 맞는 문자열만 확인하면 됩니다. 잠시 후 데이터베이스의 문자열이 삭제됩니다.

이것이 원칙이어야 합니다. 하지만 제가 이해하지 못하는 것은 이 쿠키가 이전 섹션에서 어떻게 전송되었는지입니다. 액션을 사용하여 게시물을 제출하고 얻을 수 있으며, Ajax를 사용하여 숫자를 전달할 수도 있습니다. URL은 값을 전달하는 데에도 사용됩니다.

이전 섹션에서 쿠키를 제출하는 jQuery 또는 html 코드의 관련 기능은 무엇입니까?

PHP 서버에서 쿠키를 수집하는 데 관련된 기능은 무엇입니까? 키워드를 입력해 주시면 검색해 드리겠습니다. 아니면 몇 가지 주의사항만 알려주시면 감사하겠습니다.

답글 내용:

저는 비즈니스를 좋아하는 사람으로서 무엇을 해야 할지, 무엇을 배워야 할지 항상 궁금합니다.

이 쿠키에 무슨 일이 일어나는지 여쭤보고 싶습니다.
서버에서 상대방의 사용자 이름과 비밀번호를 확인한 후 암호화된 문자열을 반환하고 해당 문자열을 서버에 저장한다는 것인가요? 데이터 베이스.

이후 로그인 시에는 아이디와 비밀번호를 확인할 필요 없이 데이터베이스에 맞는 문자열만 확인하면 됩니다. 잠시 후 데이터베이스의 문자열이 삭제됩니다.

이것이 원칙이어야 합니다. 하지만 제가 이해하지 못하는 것은 이 쿠키가 이전 섹션에서 어떻게 전송되었는지입니다. 액션을 사용하여 게시물을 제출하고 얻을 수 있으며, Ajax를 사용하여 숫자를 전달할 수도 있습니다. URL은 값을 전달하는 데에도 사용됩니다.

이전 섹션에서 쿠키를 제출하는 jQuery 또는 html 코드의 관련 기능은 무엇입니까?

PHP 서버에서 쿠키를 수집하는 데 관련된 기능은 무엇입니까? 키워드를 입력해 주시면 검색해 드리겠습니다. 아니면 몇 가지 주의사항만 알려주시면 감사하겠습니다.

서버는 유저 에이전트(주로 브라우저)가 쿠키를 저장한 후 쿠키의 이름, 값, 해당 경로, 유효 기간 등을 HTTP 응답 헤더Set-Cookie를 통해 알려줍니다. 해당 쿠키는 요청 헤더에 배치되어 서버로 전송됩니다.

프런트엔드는 JS를 통해 쿠키를 설정할 수도 있습니다.

쿠키가 설정되어 있는 한 브라우저는 자동으로 쿠키를 요청에 첨부하므로 쿠키를 적극적으로 제출할 필요가 없습니다.

PHP에서 쿠키 설정

PHP에서 쿠키를 설정하는 함수는 setcookie입니다(자주 사용하지 않는 setrawcookie도 있습니다).

<code class="php">setcookie('hello', 'world', time()+3600, '/test/', 'example.com');</code>

이렇게 하면 hello이라는 값을 갖는 world이라는 파일이 설정되고, 유효 기간은 현재 시간에 3600초(즉, 1시간)를 더한 값이고, 도메인 이름은 example.com이고, 경로는 /test/(http://example.com/test/a.php과 같은 경로에서 유효한 경로만 나타냄) 쿠키입니다.

구체적인 매개변수는 http://php.net/manual/zh/func... 문서를 참조하세요.

서버가 쿠키를 보냅니다

서버는 응답 HTTP 헤더에 Set-Cookie 헤더를 포함합니다:

<code>Set-Cookie: hello=world; Expires=Sun, 13 Nov 2016 11:30:00 GMT; Domain=example.com; Path=/test/</code>

만료 시간(Expires)은 GMT로 표시됩니다. 여기서는 베이징 시간으로 2016년 11월 13일 18:30:00(즉, 2016년 11월 13일 GMT 10:30)이라고 가정합니다. 00) 쿠키 세트는 1시간 동안 유효합니다.

쿠키가 여러 개인 경우 Set-Cookie 헤더도 여러 개 있습니다.

자세한 내용은 http://www.cnblogs.com/hdtian... 을 참고하세요.

브라우저가 쿠키를 보냅니다

브라우저가 이 쿠키를 저장합니다. 다음에 쿠키 조건을 충족하는 주소를 요청할 때 브라우저는 요청 헤더에 Cookie 헤더를 포함합니다:

<code>Cookie: hello=world</code>

쿠키가 여러 개이거나 Cookie 헤더가 하나만 있는 경우 세미콜론과 공백 ; 을 사용하여 각 쿠키의 이름-값 쌍을 구분하세요.

AJAX 요청이든 일반 POST 및 GET이든 쿠키가 유효하다면 브라우저는 이를 서버로 보냅니다.

PHP는 쿠키를 수신하고 처리합니다

PHP는 헤더 정보를 구문 분석하고 쿠키를 $_COOKIE 배열로 구문 분석합니다. 다음과 같이 hello이라는 쿠키 값에 액세스할 수 있습니다.

<code class="php">$_COOKIE['hello'];</code>

JS에서 쿠키 조작

JS에서 쿠키에 접근하는 것은 쿠키를 읽고 설정할 수 있는 편리한 인터페이스가 없기 때문에 약간 번거롭습니다. document.cookie을 통해서만 쿠키를 조작할 수 있습니다. 자세한 내용은 https://developer.mozilla.org...를 참조하세요.

JS中读取cookie直接用document.cookie,但是得到的确实和上面浏览器发送cookie中的格式类似的字符串,就是用分号和空格隔开的名值对。

比如hello=world; PHPSESSID=web5~toqn2au0krlholat9c2c4aast3这样的。我们需要自己解析。

JS中设置cookie则是和上面服务器发送cookie类似,都要设置各个参数。比如:

<code class="javascript">document.cookie="hello=kitty; expires=Sun, 13 Nov 2016 12:00:00 GMT"</code>

这样就把hello的值改成了kitty,并且把过期时间延长了半个小时。

虽然看起来好像修改了document.cookie整个值,但实际上并不会影响到其他cookie。我们再次访问document.cookie将得到hello=kitty; PHPSESSID=web5~toqn2au0krlholat9c2c4aast3这样的结果。

要删除一个cookie,只要把过期时间设置在当前时间之前就行了。

因为HTTP设计是无状态的,所以就有了cookie来充当HTTP的状态。有了cookie,服务端就知道,你是谁了。phpsetcookie函数,还有$_COOKIE来获取cookiecookie是通过头部字段CookiesSet-Cookie来传递的。所以php也可以使用设置返回头和读取返回头来设置cookie和读取cookie

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