PHP sendet Cookies in den Header-Informationen des http-Protokolls, daher muss die Funktion setcookie() aufgerufen werden, bevor andere Informationen an den Browser ausgegeben werden, was der Einschränkung bei der Funktion header() ähnelt.
1. Cookie setzen:
a.
zB:
PHP-Code
Mehrere Cookies setzen Variablen: setcookie('var[a]','value'); Verwenden Sie Arrays, um Variablen darzustellen, aber seine Indizes tun dies brauchen keine Anführungszeichen. Auf diese Weise können Sie $_COOKIE[‘var’][‘a’] verwenden, um das COOKIE zu lesen
Variable.
Header() verwenden, um Cookies zu setzen;
header("Set-Cookie: name=$value[;path=$path[;domain=xxx.com[;...]]");
PHP-Code
2. Cookies lesen:
Im obigen Beispiel ist das Cookie „TestCookie“ gesetzt, jetzt lesen wir:
PHP-Code
3.Cookies löschen
Stellen Sie einfach die gültige Zeit so ein, dass sie kleiner als die aktuelle Zeit ist, und setzen Sie den Wert auf Null. Zum Beispiel:
zB:
PHP-Code
Header() ähnlich verwenden.
Hinweis:
a.Verwenden Sie setcookie() Manchmal gibt es eine Fehlermeldung, was daran liegen kann, dass vor dem Aufruf von setcookie() eine Ausgabe oder ein Leerzeichen vorhanden ist. Es ist auch möglich, dass Ihr Dokument aus einem anderen Zeichensatz konvertiert wurde.
Andererseits verfügt das Dokument möglicherweise über eine Stücklistensignatur (d. h. es werden einige versteckte Stücklistenzeichen zum Dateiinhalt hinzugefügt). Die Lösung besteht darin, dies in Ihrem Dokument zu verhindern. Sie können das Problem auch ein wenig lösen, indem Sie die Funktion ob_start() verwenden.
b.$_COOKIE ist von magic_quotes_gpc betroffen und kann automatisch entkommen
c.Bei der Verwendung ist es notwendig zu testen, ob der Benutzer Cookies unterstützt
4. Prinzip.
a. Der Server setzt ein Cookie im Client, indem er einen HTTP-Set-Cookie-Header mit der Antwort sendet (mehrere Cookies erfordern mehrere Header).
b Der Client sendet automatisch einen http-Cookie-Header an den Server, und der Server empfängt und liest ihn. HTTP/1.x 200 OK
18:52:00 GMT
Cache-Kontrolle: kein Speichern, kein Cache, muss erneut validiert werden, Nachprüfung=0, Vorprüfung=0
Pragma: kein Cache
Inhaltstyp: Text/HTML
Diese Zeile implementiert die Cookie-Funktion Nach Erhalt dieser Zeile
Set-Cookie: TestCookie=etwas von irgendwo; Pfad=/
Der Browser erstellt eine Cookie-Datei auf der Festplatte des Clients und schreibt hinein:
TestCookie=etwas von irgendwo;
Diese Zeile ist das Ergebnis der Verwendung von setcookie('TestCookie','something fromwhere','/'); Das ist das Ergebnis der Verwendung von
header('Set-Cookie: TestCookie=something from irgendwo; path=/');.
-------------------- ------ --------------------------------Trennlinie---------- -------- ------------------------------------------ --------
PHP-SITZUNG
Das Kernkonzept der Sitzung ist: zusätzliche Daten zum Springen zwischen Webseiten, auf dem Server gespeichert, mit einer ID identifiziert und durchsucht Um die Sitzung aufrechtzuerhalten, muss der Server diese ID bei jeder Übermittlung mitbringen
--------------- -------------------------------------------------- -------------------------------------------------- -- ---------
Es gibt zwei Möglichkeiten, die Sitzungs-ID zu übergeben:
a.
Wenn Sie von dieser Seite zu einer neuen Seite springen und session_start() aufrufen, überprüft PHP die mit der angegebenen ID verknüpften Sitzungsdaten. Wenn nicht gefunden, erstellen Sie einen neuen Datensatz.
b
xxx, Sie können es auch tun durch POST Pass-Sitzungswert.
Wenn der Client die Verwendung von Cookies verbietet, können Sie die folgenden Methoden verwenden:
a php.ini session.use_trans_sid = 1 oder die Option --enable-trans-sid ist während der Kompilierung aktiviert, damit PHP die Sitzungs-ID automatisch seitenübergreifend weitergeben kann.
b. Übergeben Sie den Wert manuell über die URL und die Sitzungs-ID über das ausgeblendete Formular.
c. Speichern Sie session_id in einer Datei, Datenbank usw. und rufen Sie sie während des seitenübergreifenden Prozesses manuell auf.
Link:http://apps.hi.baidu.com/share/detail/41643457
Sitzung kann auch verwendet werden, wenn Cookies deaktiviert sind:
Session.use_cookies=1 in php.ini, ändern Sie es auf 0, die Sitzung wird auf der Serverseite gespeichert, nicht im Client-Cookie.
Sie können den Sitzungsspeicherort des Servers über session.save_path anzeigen
Sitzungsnutzung:
zB:
PHP-Code
var_dump($_SESSION
);
,time()-3600 ); Außer der eigentlichen Sitzung:
=
array();
// Schritt 3: Löschen Sie das globale Variablenarray $_SESSION
---------------------- -------------------------------------------------- -------------------------------------------------- -- ----
Ein einfaches Beispiel:
PHP-Code:
PHP-Code
Erste Anfrage an den Server:
GET /test.php HTTP/1.1 Akzeptieren : */* Referer: http://localhost/
Accept-Language: zh-cnAccept-Encoding: gzip , deflate User-Agent: Mozilla/4.0 (kompatibel; MSIE 6.0 ; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322) Host: localhost Verbindung: Keep-Alive
>
HTTP/1.1 200 OK Datum: Fr, 26. August 2005 07:44:22 GMT Server: Apache/2.0.54 (Win32) SVN/1.2.1 PHP/5.0.4 DAV/ 2 X-Powered-By: PHP/5.0.4 Set-Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3; path=/
Läuft ab: Do, 19. November 1981 08:52:00 GMTCache- Kontrolle: kein Speichern, kein Cache, erneute Validierung erforderlich, Nachprüfung=0, Vorprüfung=0 Pragma: kein Cache Content-Length: 1 Keep-Alive: timeout= 15, max=99
Verbindung: Keep-Alive
Content-Type: text/html; charset=utf-8
Content-Language: Aus
GET /test.php HTTP/1.1 Akzeptieren: */* Referer: http://localhost / Accept-Language: zh-cn Akzeptieren -Kodierung: gzip, deflate
User-Agent: Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1. 4322)Host: localhost Verbindung: Keep- Alive Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3
HTTP/1.1 200 OK
Datum: Fr, 26. August 2005 07:44:23 GMT
Server: Apache/2.0.54 (Win32) SVN/1.2. 1 PHP/5.0.4 DAV/2
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3; path=/ :00 GMT
Cache-Control: no-store , kein Cache, muss erneut validiert werden, Nachprüfung=0, Vorprüfung=0
Pragma: kein Cache
Inhaltslänge: 1
Keep-Alive: Zeitüberschreitung=15, max=98
Verbindung: Keep-Alive
Inhaltstyp: text/html; charset=utf-8
Inhaltssprache: Aus
Wenn man diese Ausgaben sorgfältig vergleicht, enthält die zweite Anfrage mehr Informationen als die erste Anfrage: Cookie: PHPSESSID =bmmc3mfc94ncdr15ujitjogma3
Dieser Header sendet Cookie-Informationen an den Server. Ich sage dem Server, dass ich ein Cookie namens PHPSESSID habe und der Inhalt bmmc3mfc94ncdr15ujitjogma3 ist.
Woher kommt dieser Keks? Schauen Sie sich die vom Server zum ersten Mal zurückgegebenen Informationen an:
Set-Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3; path=/
Dies ist der Server, der ein Cookie an den Client-Browser schreibt. Der Name ist PHPSESSID und der Wert ist bmmc3mfc94ncdr15ujitjogma3. Dieser Wert ist eigentlich die sogenannte session_id.
Wenn wir uns die zweite Anfrage an den Server ansehen, wird das PHPSESSID-Cookie immer noch an den Server gesendet.
Die folgenden Schlussfolgerungen können gezogen werden:
1 durch Cookies durchsucht werden. Der Server sendet eine Sitzung
2. Jedes Mal, wenn eine Anfrage an den Server gestellt wird, hängt der lokale Browser das Cookie an die Anfrageinformationen an
Zusammenfassung:
Solange die Sitzung verwendet wird, wird die Sitzung über Cookies an den Client-Browser gesendet Tatsächlich Sitzung ist ein völlig abstraktes Konzept. Was die Sitzung wirklich benötigt, ist, dass zusätzlich zu den von get und post bereitgestellten Parametern zusätzliche Informationen für einen bestimmten Benutzer (vielleicht einen Browser, einen Computer usw.) gespeichert werden können sogar eine IP). Wenn wir die vom System bereitgestellte Sitzung nicht nutzen, können wir beispielsweise die Daten, die wir ursprünglich in der Sitzung speichern möchten, serialisieren und dann zu einem String verschlüsseln und in allen URLs und Formularen weitergeben die Seite. Nachdem der Server die Seitenanforderung erhalten hat, entnimmt er die geheime Zeichenfolge aus get oder post, deckt sie auf und stellt die Daten wieder her. Dies ist eigentlich dasselbe wie bei der Sitzung. Es ist nur so, dass diese Methode super ist und zu viel zusätzliche Arbeit erfordert, um sie umzusetzen.
Aus technischer Sicht besteht die Sitzung darin, die zusätzlichen Daten, die zwischen Webseiten-Links gespeichert werden sollen, mit einer ID zu benennen und sie auf der Serverseite zu speichern. Der Browser muss diese ID nur für jeden Abruf oder Beitrag bereitstellen. Sie können die zuvor gespeicherten Daten abrufen. PHP verwendet standardmäßig Dateien zum Speichern von Daten. Unter Unix erstellt PHP im Allgemeinen einen Dateinamen wie „sess_“+$session_id unter /tmp. Über diesen Namen können Sie die Daten, die session_id entsprechen, direkt finden. Daher besteht das Kernkonzept der Sitzung darin, dass zusätzliche Daten zum Wechseln zwischen Webseiten auf dem Server gespeichert und mit einer ID identifiziert werden. Um die Sitzung aufrechtzuerhalten, muss der Browser diese ID bei jeder Übermittlung mitbringen.
Wie kann der Browser diese ID bei jeder Anfrage mitbringen? Der dumme Weg ist natürlich, jedem URL-Link oder Formularbeitrag einen ID-Parameter hinzuzufügen. Der einfachere Weg ist natürlich die Speicherung über Cookies. Es gibt jedoch immer noch ein Problem mit der Cookie-Lösung. Was ist zu tun, wenn der Browser keine Cookies unterstützt?
Die oben genannte Sitzung ist die von PHP4 und 5 bereitgestellte Sitzungsfunktion. Sie müssen wissen, dass das System Hat die Sitzungsfunktion vor PHP4 nicht bereitgestellt! Und viele CGI-Programme sind vollständig selbst implementierte Sitzungen. Für von PHP(4,5) bereitgestellte Sitzungen verwendet das System standardmäßig Cookies, um die Sitzungs-ID zu speichern
In meinem vorherigen Projekt nutzten alle Benutzer das Web im Intranet. Um die Verwaltung zu erleichtern, ist die Browser-IP direkt an eine Sitzung gebunden, d. h. die Browser-IP-Adresse wird anstelle der Sitzungs-ID verwendet. In dieser Lösung gibt es kein Cookie, aber es handelt sich dennoch um eine Sitzung, da es nicht außerhalb der Definition einer Sitzung fällt.
Jedes Mal, wenn eine Anfrage an den Server gestellt wird, hängt der lokale Browser das Cookie an die Anfrageinformationen an Tatsächlich Es ist dasselbe wie Session und hat nichts damit zu tun, es geht nur darum, wie Cookies im http-Protokoll funktionieren. Dieses Cookie wird von der Funktion session_start() geschrieben. Wir können das Cookie auch beliebig schreiben, solange es geschrieben wird und die Gültigkeitsdauer nicht abgelaufen ist.