PHP-Version – Prinzip und Anwendung von HTTP-Sitzungscookies

WBOY
Freigeben: 2016-07-30 13:29:55
Original
1059 Leute haben es durchsucht

PHP-COOKIE

Cookie ist eine Möglichkeit, Daten auf der Remote-Browserseite zu speichern und einen Mechanismus zur Verfolgung und Identifizierung von Benutzern.
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.Sie können setcookie() oder verwenden setrawcookie()-Funktion zum Setzen von Cookies. Es kann auch festgelegt werden, indem http-Header direkt an den Client gesendet werden.

zB:

PHP-Code PHP-Version – Prinzip und Anwendung von HTTP-Sitzungscookies

  1. $value = 'etwas von irgendwo';
  2. setcookie("TestCookie", $value); /* Einfache Cookie-Einstellungen */
  3. setcookie("TestCookie" , $value, time()+3600); /* Gültigkeitsdauer 1 Stunde */
  4. setcookie("TestCookie", $value, time()+3600, "/~rasmus/",
  5. ".example.com", 1); /* Gültiges Verzeichnis /~rasmus, gültiger Domainname example.com und alle seine Subdomains */

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.

b.

Header() verwenden, um Cookies zu setzen;

 

header("Set-Cookie: name=$value[;path=$path[;domain=xxx.com[;...]]");

zB:

PHP-Code

PHP-Version – Prinzip und Anwendung von HTTP-Sitzungscookies

  1. $value = 'etwas von irgendwo';header("Set- Cookie:name=$value");
-------------- -------------- --------------------- -------------- ------------------------------------

2. Cookies lesen: Verwenden Sie direkt die in PHP integrierte Super-Global-Variable $_COOKIE, um die Cookies auf der Browserseite zu lesen.

Im obigen Beispiel ist das Cookie „TestCookie“ gesetzt, jetzt lesen wir: zB:

PHP-Code

  1. drucken $_COOKIE['TestCookie']; >

---------------------- -------------------------------------------------- -------------------------------------------------- -- ----

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 PHP-Version – Prinzip und Anwendung von HTTP-Sitzungscookies

  1. setcookie("name", "", time() - 1);

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

Sitzung verwendet ein Cookie mit einer Ablaufzeit von 0 und generiert synchron auf der Serverseite eine eindeutige Kennung (eine lange Zeichenfolge), die als Sitzungs-ID bezeichnet wird. Sitzungsdatei (Sie können den Speichertyp der Sitzung selbst definieren), die dem Benutzercomputer zugeordnet ist. Die Webanwendung speichert Daten zu diesen Sitzungen und ermöglicht die Weitergabe der Daten zwischen Seiten, wobei den Besuchern der Website eine eindeutige Kennung, die sogenannte SESSION-ID, zugewiesen wird. Es wird entweder in einem Cookie auf der Clientseite gespeichert oder über die URL übergeben. SESSION ermöglicht es dem Benutzer, eine beliebige Anzahl von Variablen zu registrieren und diese für jede Anfrage zu reservieren. Wenn ein Besucher auf die Website zugreift, aktiviert PHP automatisch (wenn session.auto_start auf 1 gesetzt ist) oder auf Anfrage des Benutzers (explizit aufgerufen durch session_start() oder session_register() Wird implizit aufgerufen), um zu prüfen, ob in der Anfrage eine bestimmte SESSION-ID gesendet wurde. Wenn ja, wird die zuvor gespeicherte Umgebung neu erstellt.

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.SESSION-ID über Cookie übertragen

Verwenden Sie session_start(), um die Sitzung aufzurufen, während die Sitzungsdatei generiert wird . ID-Hashwert und Sitzungsname mit dem Standardwert PHPSESSID, und die an den Client gesendete Variable ist (Standard ist) PHPSESSID(Sitzungsname), und der Wert ist ein 128-Bit-Hashwert. Der Server interagiert über dieses Cookie mit dem Client. Der Wert der Sitzungsvariablen wird intern von PHP serialisiert und in einer Textdatei auf dem Servercomputer gespeichert. Er interagiert mit dem Coolie des Clients, dessen Variablenname standardmäßig PHPSESSID ist. Das heißt, der Server sendet automatisch den http-Header: header(' Set-Cookie: session_name()=session_id(); path=/'); d. h. setcookie(session_name(),session_id());
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 Sitzungs-ID über URL übertragen

Diese Methode wird nur verwendet, wenn der Benutzer die Verwendung von Cookies verbietet, da Browser-Cookies bereits universell sind und diese Methode aus Sicherheitsgründen nicht benötigt wird.
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 PHP-Version – Prinzip und Anwendung von HTTP-Sitzungscookies

  1. // page1.php
  2. session_start() ;
  3. Echo 'Willkommen auf Seite #1'; 🎜>
  4. /* Sitzungsvariable erstellen und der Sitzungsvariablen einen Wert zuweisen */
  5. $_SESSION[' favcolor '] = 'grün'; _SESSION['animal'
  6. ] =
  7. 'cat'; $_SESSION['time' ] = time();
  8. // Wenn der Client Cookies verwendet, kann die Sitzung direkt an übergeben werden page2.php
  9. echo '
    page 2';
    // Wenn der Client Cookies deaktiviert
  10. echo '
    Seite 2' ; > /*
  11. Standardmäßig lautet die SID unter php5.2.1 Nur in das Cookie geschrieben Es wird gleichzeitig ein Wert vorhanden sein. Wenn das der Sitzung entsprechende Cookie bereits vorhanden ist die SID wird (undefiniert) leer sein
  12. */
  13. >// page2.php
  14. session_start() ;
  15. print $_SESSION['animal'
  16. ]
// Eine einzelne Sitzung ausdrucken

PHP-Version – Prinzip und Anwendung von HTTP-Sitzungscookies var_dump($_SESSION

);
  1. // Drucken Sie Seite1 aus. Der von .php übergebene Sitzungswert
  2. Sitzung löschen:
  3. zB:PHP-Code
session_destroy(); // Schritt 1: Löschen Sie die serverseitige Sitzungsdatei, verwenden Sie

setcookie(session_name(),

''

,time()-3600 ); Außer der eigentlichen Sitzung:

$_SESSION

=

array

();

// Schritt 3: Löschen Sie das globale Variablenarray $_SESSION PHP-Version – Prinzip und Anwendung von HTTP-Sitzungscookies

  1. ?> 

    ---------------------- -------------------------------------------------- -------------------------------------------------- -- ----

    Ein einfaches Beispiel:

    PHP-Code:

    PHP-Code PHP-Version – Prinzip und Anwendung von HTTP-Sitzungscookies

    1. session_start();
    2. if (isset($_SESSION ['test_sess'])){
    3. $_SESSION['test_sess']++;
    4. }else{
    5. $_SESSION['test_sess'] = 0;
    6.  
    7. echo
    8. $_SESSION ['test_sess']
    verwendete ein HTTP-Paket-Sniffing-Tool namens httplook, um Pakete zu erfassen:

    Erste Anfrage an den Server:

    GET /test.php HTTP/1.1 Akzeptieren : */* Referer: http://localhost/

    Accept-Language: zh-cn

    Accept-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




    >

    Der Server kehrt zum ersten Mal zurück:

    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 GMT

    Cache- 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








    Zweite Anfrage an den Server:

    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







    Der Server zum zweiten Mal zurückgekehrt:

    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.

    Das Obige stellt die PHP-Version vor – das Prinzip und die Anwendung von HTTP-Sitzungscookies, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage