In diesem Artikel wird hauptsächlich die Verwendung von Session-Cookies in PHP und Codeigniter vorgestellt. Ich hoffe, dass er für alle hilfreich ist.
1. Cookies lesen und schreiben
<1> Native
setcookie('name','value',time)
Setup fehlgeschlagen, nicht normal in den Browser geschrieben, Test fehlgeschlagen, Grund unbekannt
<2>CI-Framework
$this->input->set_cookie("views","test10",1000); echo $_COOKIE["views"];//此方法获取值时,如果值不存在会报错,当然可以先用isset($_COOKIE["views"])判断一下
<3>Von Helfer
$this->load->helper('cookie');//这行放在view也是可以的,随便 set_cookie('views','test10',1000); echo get_cookie('views');//此方法获取值如果获取不到,会返回空,不会报错
2. Lese- und Schreibsitzung
<1> native Sitzung
Start:
<?php session_start(); ?>
Zuweisen:
$_SESSION['views'] = "test20";
Wert:
echo "Session:". $_SESSION['views'];
Dauer:
Sitzung. Wenn der Browser geschlossen wird, wird die PHP-Sitzung im Cookie gelöscht und beim nächsten Öffnen wird ein
neu generiert, obwohl der Server die Sitzung weiterhin speichert. Die Ablaufzeit der Sitzung wird in php.ini festgelegt, siehe einen anderen Artikel Sicherheitsüberlegungen zu PHP (Codeigniter)
<2>CI-Framework-Sitzung
Start:
$this->load->library('session');//load必须在controller完成,当要使用session必须先load赋值: $this->session->views = "test11";
Wert:
echo "Session:". $_SESSION['views'];
Dauer:
Der Client hat 2 Stunden Dauer, wenn die Sitzung des Servers gelöscht wird, da die Sitzungs-ID des Clients lautet immer noch gültig, sodass der Server beim erneuten Öffnen eine Sitzung mit derselben Sitzungs-ID wie die des Clients erstellt. Natürlich spielt es keine Rolle, ob eine neue oder eine alte ID erstellt wird, da nur die ID dieselbe ist Es gibt keine Daten
<3> Unterschied
> other heißt ci_session
> Es kann nur einer gestartet werden, nicht beide
> Die Werte sind gleich
> , und Sie sollten die native Sitzung vollständig aufgeben
> Auf die native PHP-Sitzung kann beiläufig zugegriffen werden, und die ci_session ist httponly, was bedeutet, dass die native Sitzung möglicherweise über xxs angegriffen wird und das Cookie über abgerufen wird js
<4>Ausnahmen
Es gibt eine Situation wie diese:
Wenn dies geschieht, existiert ci_session bereits, da dieses ci_ persistent ist
//session_start();//没有启动原生的session //$this->load->library('session');//没有启动ci的session $_SESSION['views'] = "test23";//直接用原生的方式进行赋值 echo "Session:". $_SESSION['views'];//可以正常取值出来"test23"
Beim Betrachten des Cookies wird festgestellt, dass keine native Sitzung vorhanden ist , und es kann sich nur um eine CI-Sitzung handeln. Suchen Sie dann diese Datei in der Sitzung des Servers und stellen Sie fest, dass der Wert nicht eingeschrieben ist. Wenn session_start() deklariert ist, wechselt es in den nativen Modus und erstellt eine PHP-Sitzung neu Der Wert wird geschrieben.
Wenn nichts vorhanden ist. Wenn Sie den Wert direkt übernehmen, wird ein Fehler gemeldet, da Sie ihn nicht laden müssen Daher wird ein Fehler gemeldet, der beim Zuweisen von Werten auf native Weise dem Starten der Sitzung entspricht. Er verfügt jedoch nicht über die Berechtigung zum Schreiben. Dies kann als a bezeichnet werden Fehler
<5>So funktioniert die Sitzung
Die Funktionsweise von Cookies ist relativ einfach zu verstehen, das heißt, sie ist in die geschrieben Es wird ein Benutzer-Cookie gespeichert und alles, was geschrieben wird, wird ausgelesen. Solange es sich um ein Cookie auf dieser Seite handelt, kann es per Schlüsselwert ausgelesen werden.
Der Wert der Sitzung wird auf dem Server gespeichert, aber woher wissen Sie, zu welchem Benutzer dieser Wert gehört? Durch die Speicherung des Sitzungsdateinamens im Benutzer-Cookie wird der gespeicherte Wert in einer gleichnamigen Datei auf dem Server abgelegt. Beim Diebstahl von Cookies handelt es sich um den Diebstahl wichtiger Informationen, die auf dem Server gespeichert werden. Wenn sie jedoch gestohlen werden, ist dies der Fall. Daher ist der im Cookie gespeicherte Sitzungsschlüssel nicht vertrauenswürdig und es sollte eine Authentifizierung durchgeführt werden.
Beachten Sie, dass beim Schreiben der Sitzung der Sitzungsschlüssel automatisch in das Cookie des Benutzers geschrieben wird. Diese Dauer sollte in der PHP-Konfiguration in .ini festgelegt werden .
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
PHP+MySQL-Transaktionsverarbeitungsproblemlösung mit hoher Parallelitätssperrung
PHPDie Verwendung von file_get_contents zum Senden der HTTP-Anfragefunktion ist einfach
Monkey King-Algorithmus (Monkey Chooses the King), implementiert durch PHP
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung zur Verwendung von Session-Cookies in PHP und Codeigniter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!