Heim > Artikel > Backend-Entwicklung > javascript - Wer kann mir sagen, wie PHP Cookies akzeptiert und welche Funktionen damit verbunden sind?
Ich bin geschäftstüchtig und immer neugierig, was ich tun und lernen kann.
Ich möchte fragen, was mit diesem Cookie los ist.
Ist es so, dass nach der Überprüfung des Benutzernamens und des Passworts der anderen Partei vom Server eine verschlüsselte Zeichenfolge zurückgegeben und auf dem Server gespeichert wird? Datenbank.
Wenn sich der Benutzer in Zukunft anmeldet, ist es nicht erforderlich, die ID und das Passwort zu überprüfen. Es muss lediglich überprüft werden, ob die Zeichenfolge mit der Datenbank korrekt ist. Nach einer Weile wird die Zeichenfolge in der Datenbank gelöscht.
Das sollte das Prinzip sein. Was ich jedoch nicht verstehe, ist, wie dieses Cookie aus dem vorherigen Abschnitt gesendet wurde. Ich kann Aktionen verwenden, um Beiträge zu senden und abzurufen, und ich kann auch Ajax verwenden, um Zahlen zu übergeben. Die URL wird auch zur Übergabe des Werts verwendet.
Was sind die zugehörigen Funktionen von jQuery oder HTML-Code, die im vorherigen Abschnitt Cookies senden?
Welche Funktionen gibt es zum Sammeln von Cookies vom PHP-Server? Können Sie mir bitte ein Schlüsselwort geben, damit ich danach suchen kann, oder mir einfach einige Vorsichtsmaßnahmen mitteilen? Danke.
Ich bin geschäftstüchtig und immer neugierig, was ich tun und lernen kann.
Ich möchte fragen, was mit diesem Cookie los ist.
Ist es so, dass nach der Überprüfung des Benutzernamens und des Passworts der anderen Partei vom Server eine verschlüsselte Zeichenfolge zurückgegeben und auf dem Server gespeichert wird? Datenbank.
Wenn sich der Benutzer in Zukunft anmeldet, ist es nicht erforderlich, die ID und das Passwort zu überprüfen. Es muss lediglich überprüft werden, ob die Zeichenfolge mit der Datenbank korrekt ist. Nach einer Weile wird die Zeichenfolge in der Datenbank gelöscht.
Das sollte das Prinzip sein. Was ich jedoch nicht verstehe, ist, wie dieses Cookie aus dem vorherigen Abschnitt gesendet wurde. Ich kann Aktionen verwenden, um Beiträge zu senden und abzurufen, und ich kann auch Ajax verwenden, um Zahlen zu übergeben. Die URL wird auch zur Übergabe des Werts verwendet.
Was sind die zugehörigen Funktionen von jQuery oder HTML-Code, die im vorherigen Abschnitt Cookies senden?
Welche Funktionen gibt es zum Sammeln von Cookies vom PHP-Server? Können Sie mir bitte ein Schlüsselwort geben, damit ich danach suchen kann, oder mir einfach einige Vorsichtsmaßnahmen mitteilen? Danke.
Der Server teilt dem Benutzeragenten den Namen, den Wert, den entsprechenden Pfad, die Gültigkeitsdauer usw. des Cookies über den HTTP-Antwortheader mit Set-Cookie
Nachdem der Benutzeragent (normalerweise der Browser) es gespeichert hat, wenn er Daten anfordert das Backend, es Das entsprechende Cookie wird im Anforderungsheader platziert und an den Server gesendet.
Das Frontend kann auch Cookies über JS setzen.
Solange das Cookie gesetzt ist, hängt der Browser das Cookie automatisch an die Anfrage an und Sie müssen es nicht aktiv übermitteln.
Die Funktion zum Setzen von Cookies in PHP ist setcookie
(es gibt auch ein setrawcookie
, das nicht häufig verwendet wird).
<code class="php">setcookie('hello', 'world', time()+3600, '/test/', 'example.com');</code>
Auf diese Weise wird eine Datei mit dem Namen hello
mit dem Wert world
festgelegt, der Gültigkeitszeitraum ist die aktuelle Zeit plus 3600 Sekunden (d. h. 1 Stunde), der Domänenname ist example.com
und Der Pfad ist /test/
(und stellt nur Gültig unter Pfaden wie http://example.com/test/a.php
dar) Cookies.
Spezifische Parameter finden Sie im Dokument http://php.net/manual/zh/func....
Der Server fügt einen Set-Cookie
-Header in den Antwort-HTTP-Header ein:
<code>Set-Cookie: hello=world; Expires=Sun, 13 Nov 2016 11:30:00 GMT; Domain=example.com; Path=/test/</code>
Die Ablaufzeit (Expires
) wird in GMT angegeben. Hier gehe ich davon aus, dass ich am 13. November 2016 um 18:30:00 Uhr Pekinger Zeit bin (also am 13. November 2016 um 10:30 Uhr GMT). 00) Der Cookie-Satz ist 1 Stunde lang gültig.
Wenn mehrere Cookies vorhanden sind, gibt es mehrere Set-Cookie
-Header.
Weitere Informationen finden Sie unter http://www.cnblogs.com/hdtian... .
Der Browser speichert dieses Cookie. Wenn Sie das nächste Mal eine Adresse anfordern, die die Cookie-Bedingungen erfüllt, fügt der Browser einen Cookie
-Header in den Anforderungsheader ein:
<code>Cookie: hello=world</code>
Wenn es mehrere Cookies oder nur einen Cookie
-Header gibt, verwenden Sie Semikolons und Leerzeichen ;
, um die Name-Wert-Paare jedes Cookies zu trennen.
Egal, ob Sie eine AJAX-Anfrage oder eine normale POST- und GET-Anfrage stellen: Solange das Cookie gültig ist, sendet der Browser es an den Server.
PHP analysiert die Header-Informationen und parst das Cookie in das Array $_COOKIE
. Wir können auf den Wert des Cookies mit dem Namen hello
wie folgt zugreifen:
<code class="php">$_COOKIE['hello'];</code>
Der Zugriff auf Cookies in JS ist etwas mühsam, da es keine praktische Schnittstelle zum Lesen und Setzen von Cookies gibt. Wir können Cookies nur über document.cookie
manipulieren. Einzelheiten finden Sie unter: 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
,服务端就知道,你是谁了。php
有setcookie
函数,还有$_COOKIE
来获取cookie
。cookie
是通过头部字段Cookies
和Set-Cookie
来传递的。所以php
也可以使用设置返回头和读取返回头来设置cookie
和读取cookie
。