Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Cookie und Sitzungsmechanismus

PHP-Cookie und Sitzungsmechanismus

WBOY
WBOYOriginal
2016-10-11 14:23:15990Durchsuche

Liebe Meister, ich war mir nie ganz im Klaren über Cookie- und Sitzungsmechanismen. Gibt es irgendwelche guten Informationen, aus denen ich lernen könnte

Antwortinhalt:

Liebe Meister, ich war mir nie ganz im Klaren über Cookie- und Sitzungsmechanismen. Gibt es irgendwelche guten Informationen, aus denen ich lernen könnte

Tatsächlich erhalten Sie viele Antworten, wenn Sie sich an Suchmaschinen wenden.
Wie können Sie dieses Problem lösen? Betätigungsmechanismus Sie werden es natürlich verstehen.

  1. Welche Probleme lösen Cookies und Sitzungen?

gleicht die inhärenten Mängel des HTTP-Protokolls aus, das zustandslos ist (es kann nicht erkennen, ob die vorherige Anfrage und die nächste Anfrage vom selben Benutzer stammen

).
  1. Wie löst man das Problem?

speichert einen key=>value-Wert auf der Serverseite und überträgt diesen key über ein Cookie. Jedes Mal, wenn der Client eine Anfrage stellt, wird dieser key an die Serverseite übermittelt, und der Server kann unterscheiden, ob der Die Anfrage kommt vom selben Benutzer.

Das Obige beantwortet einfach den Mechanismus von Cookie und Sitzung. Nach spezifischen Antworten können Sie mit diesen beiden Fragen suchen.

Bevor Sie ihre Implementierungsprinzipien verstehen, unterscheiden Sie zunächst die Rollen der beiden.

Cookie – eine Art zwischengespeicherter Daten, die im Browser vorhanden sind und vom Browser (in den Einstellungen) deaktiviert werden können. Wenn der Browser Cookies deaktiviert, sind die Cookies nicht verfügbar. Heutzutage schaltet im Allgemeinen niemand mehr Cookies aus.
Da Cookies vom Browser stammen, Im Grunde kann jeder Ihre Cookies ändern. Ist es sicher? Natürlich ist es nicht sicher. Wie können wir also in dieser Zeit sicher sein? Bitte verwenden Sie Session ausnahmslos.

Sitzung – Wie der Name schon sagt, „Sitzung“, wird sie auf dem Server gespeichert, was sich von Cookies unterscheidet, die im Browser des Benutzers gespeichert werden. Und es basiert auf Cookies. Wenn das Cookie ungültig ist, funktioniert die Sitzung nicht ordnungsgemäß. Weil Session seine Session_id in Cookie ablegt. Bei jeder Kommunikation mit dem Website-Server kann die serverseitige Programmiersprache die session_id im Cookie abrufen und die auf dem Server gespeicherten Sitzungsdaten lesen.
session_id ist eine sehr wichtige Sache. Was soll ich tun, wenn ich möchte, dass die Sitzung auch nach der Deaktivierung von Cookies weiterhin nützlich ist? Jede Anfrage enthält einen kv im Header, der die Sitzungs-ID bereitstellt. . . BLA BLA BLA. . . Ich glaube nicht, dass Sie das noch lernen müssen, es ist nur ein Exkurs.


COOKIE – Daten werden in dem aktuell vom Benutzer verwendeten Browser gespeichert (wechseln Sie einen Browser, und das vorherige COOKIE ist verschwunden), schwache Sicherheit

SITZUNG – Daten werden mit hoher Sicherheit auf dem Server gespeichert. Auch ein Browserwechsel erfordert eine erneute Anmeldung. Denn auch die Cookies, auf die es zurückgreift, sind je nach Browser unterschiedlich.

Als nächstes: Wie verwende ich Cookies und Sitzungen? Du kannst es lernen.

Sitzungen können basierend auf Cookies oder Get-Parametern implementiert werden, obwohl dies nicht sicher ist.
Sehen Sie sich das folgende Beispiel für die Verwendung einer MySQL-Speichertabelle zur Implementierung der Sitzungsspeicherung an, um die Beziehung zwischen Sitzung und Cookies grob zu verstehen

<code>CREATE TABLE sessions (
    user_id int(10) unsigned NOT NULL,
    session text NOT NULL,
    md5 char(32) NOT NULL,
    PRIMARY KEY (user_id)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
其中:
user_id存储的是用户ID,作为主键.
session存储的是用户的会话数组经过serialize或json_encode后的字符串.
md5存储的是session字段的MD5值,用于实现Check And Set版本号乐观锁:
--读取会话
SELECT session, md5 --写入会话时需要用到这里查出来的md5,就是下面的$last_md5
FROM sessions WHERE user_id = $user_id
--写入会话
UPDATE sessions
SET session = $str, md5 = md5($str)
WHERE user_id = $user_id 
AND md5 = $last_md5 --检查MD5,确保session字段没有被修改过</code>
Implementieren Sie einen benutzerdefinierten Cookie-Sitzungsmechanismus basierend auf der Datenbank.

Dieses Cookie muss nicht nur Benutzer authentifizieren, sondern darf auch nicht gefälscht und geknackt werden.

Stellungnahme:
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