Heim > Artikel > Backend-Entwicklung > Was beinhaltet die PHP-Sitzungstechnologie hauptsächlich?
In diesem Artikel werden hauptsächlich Cookies und Sitzungen des PHP-Konversationsmechanismus erläutert.
Einführung in Cookies
Cookies sind Daten, die im Browser des Kunden gespeichert werden. Wir verwenden Cookies, um Benutzerdaten zu verfolgen und zu speichern. Im Allgemeinen werden Cookies über HTTP-Header vom Server an den Client zurückgegeben. Die meisten Webprogramme unterstützen Cookie-Vorgänge. Da Cookies im HTTP-Header vorhanden sind, müssen sie gesetzt werden, bevor andere Informationen ausgegeben werden, ähnlich wie bei den Nutzungsbeschränkungen der Header-Funktion.
PHP setzt Cookies über die Setcookie-Funktion. Jedes vom Browser zurückgesendete Cookie wird von PHP automatisch in der globalen Variablen von $_COOKIE gespeichert, sodass wir $_COOKIE['key'] verwenden können, um ein Cookie zu lesen Wert.
Cookies in PHP sind weit verbreitet und werden häufig zum Speichern von Anmeldeinformationen, Einkaufswagen usw. von Benutzern verwendet. Bei der Verwendung einer Sitzung werden Cookies normalerweise zum Speichern von Sitzungs-IDs zur Identifizierung von Benutzern verwendet. Cookies haben eine Gültigkeitsdauer Nach Ablauf der Gültigkeitsdauer wird das Cookie automatisch vom Client gelöscht. Gleichzeitig kann Cookie zur Sicherheitskontrolle auch Domäne und Pfad festlegen. Wir werden diese in späteren Kapiteln ausführlich erläutern.
Aus Gründen der Website-Sicherheit bietet diese Website vorübergehend keine Funktion zur Anzeige von Cookie-Variablen. Bitte testen Sie sie lokal.
Cookies setzen
PHP Die häufigste Methode zum Setzen von Cookies ist die Verwendung der Setcookie-Funktion. Die ersten 5, die wir häufig verwenden, sind:
name (Cookie-Name) kann über $_COOKIE['name'] aufgerufen werden. ]
Wert (Cookie-Wert)
expire (Ablaufzeit) Unix-Zeitstempelformat, der Standardwert ist 0, was bedeutet, dass er abläuft, wenn der Browser geschlossen wird
Pfad ( gültiger Pfad) Wenn der Pfad auf „/“ festgelegt ist, ist die gesamte Website gültig
Domäne (gültige Domäne) Der gesamte Domänenname ist standardmäßig gültig. Wenn „www.imooc.com“ festgelegt ist, Es ist nur in der WWW-Subdomain gültig
$value = 'test'; setcookie("TestCookie", $value); setcookie("TestCookie", $value, time()+3600); //有效期一小时 setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //设置路径与域
Es gibt auch eine Funktion setrawcookie in PHP, die im Grunde die gleiche ist wie setcookie. Der einzige Unterschied besteht darin, dass der Wert nicht automatisch urlencodiert wird, also urlencode muss bei Bedarf manuell durchgeführt werden.
setrawcookie('cookie_name', rawurlencode($value), time()+60*60*24*365);
Da Cookies über HTTP-Header gesetzt werden, können sie auch direkt über die Header-Methode gesetzt werden.
header("Set-Cookie:cookie_name=value");
Cookie-Löschung und Ablaufzeit
In den vorherigen Kapiteln haben wir etwas über die Funktion zum Setzen von Cookies gelernt, aber wir haben festgestellt, dass es keine Funktion zum Löschen von Cookies gibt php. Das Löschen von Cookies in PHP erfolgt ebenfalls über die Funktion setcookie.
setcookie('test', '', time()-1);
Sie können sehen, dass das Cookie automatisch abläuft, wenn die Ablaufzeit des Cookies vor der aktuellen Zeit festgelegt wird, wodurch der Zweck des Löschens des Cookies erreicht wird. Der Grund für dieses Design ist, dass Cookies über HTTP-Header weitergeleitet werden. Der Client setzt Cookies basierend auf dem vom Server zurückgegebenen Set-Cookie. Wenn das Löschen von Cookies die Verwendung eines neuen Del-Cookies erfordert, wird es kompliziert Tatsächlich kann das Setzen, Aktualisieren und Löschen von Cookies einfach und übersichtlich über Set-Cookie erfolgen.
Nachdem wir das Prinzip verstanden haben, können wir Cookies auch direkt über die Kopfzeile löschen.
header("Set-Cookie:test=1393832059; expires=".gmdate('D, d M Y H:i:s \G\M\T', time()-1));
gmdate wird hier zur Generierung der Greenwich Mean Time verwendet, um die Auswirkungen von Zeitunterschieden zu eliminieren.
Ähnlichkeiten und Unterschiede zwischen Sitzung und Cookie
Cookie speichert Daten auf dem Client und stellt eine Verbindung zwischen dem Benutzer und dem Server her. Es kann normalerweise viele Probleme lösen Cookies haben immer noch einige Einschränkungen:
Cookies sind relativ nicht sehr sicher und können leicht gestohlen werden, was zu Cookie-Spoofing führt
Der Wert eines einzelnen Cookies kann nur bis zu 4 KB speichern
Jede Anfrage erfordert eine Netzwerkverbindungsübertragung, die Bandbreite belegt
Sitzung speichert die Sitzungsdaten des Benutzers auf der Serverseite, ohne Größenbeschränkung. Die Benutzeridentifizierung erfolgt standardmäßig über eine Sitzungs-ID durch ein Cookie, daher verlässt sich seesion in gewissem Umfang auf Cookies. Dies ist jedoch nicht absolut. Die Sitzungs-ID kann auch über Parameter implementiert werden. Solange die Sitzungs-ID zur Identifizierung an den Server übergeben werden kann.
Sitzung verwenden
Die Verwendung einer Sitzung in PHP ist sehr einfach. Führen Sie zunächst die Methode session_start aus, um die Sitzung zu öffnen, und lesen und schreiben Sie dann die Sitzung über die globale Variable $ _SITZUNG.
session_start(); $_SESSION['test'] = time(); var_dump($_SESSION);
Session kodiert und dekodiert automatisch den festzulegenden Wert, sodass die Sitzung jeden Datentyp unterstützen kann, einschließlich Daten und Objekte.
session_start(); $_SESSION['ary'] = array('name' => 'jobs'); $_SESSION['obj'] = new stdClass(); var_dump($_SESSION);
Sitzungen werden standardmäßig in Form von Dateien auf dem Server gespeichert. Wenn eine Sitzung auf einer Seite geöffnet wird, wird daher ausschließlich die Sitzungsdatei belegt. Dies führt zu anderen gleichzeitigen Zugriffen der aktuellen Benutzer kann nicht ausführen und warten.
Sitzung löschen und zerstören
Um einen Sitzungswert zu löschen, können Sie die unset-Funktion von PHP verwenden. Nach dem Löschen wird er aus der globalen Variablen $_SESSION entfernt und kann nicht zugegriffen werden.
session_start(); $_SESSION['name'] = 'jobs'; unset($_SESSION['name']); echo $_SESSION['name']; //提示name不存在
Wenn Sie alle Sitzungen löschen möchten, können Sie die Funktion session_destroy verwenden, um die aktuelle Sitzung zu zerstören. session_destroy löscht alle Daten, die session_id ist jedoch weiterhin vorhanden.
session_start(); $_SESSION['name'] = 'jobs'; $_SESSION['time'] = time(); session_destroy();
值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。
session_start(); $_SESSION['name'] = 'jobs'; $_SESSION['time'] = time(); unset($_SESSION); session_destroy(); var_dump($_SESSION); //此时已为空
如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。
使用session来存储用户的登录信息
session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等。
用户在登录成功以后,通常可以将用户的信息存储在session中,一般的会单独的将一些重要的字段单独存储,然后所有的用户信息独立存储。
$_SESSION['uid'] = $userinfo['uid']; $_SESSION['userinfo'] = $userinfo;
一般来说,登录信息既可以存储在sessioin中,也可以存储在cookie中,他们之间的差别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,cookie需要进行格式化与加密存储,而session存储在服务端则安全性较高。
Das obige ist der detaillierte Inhalt vonWas beinhaltet die PHP-Sitzungstechnologie hauptsächlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!