Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in den Beispielcode der PHP-Sitzungssteuerung

Detaillierte Einführung in den Beispielcode der PHP-Sitzungssteuerung

黄舟
黄舟Original
2017-03-14 16:29:551481Durchsuche


Übersicht

http Das Protokoll ist zustandslos und der Server kann bei jeder Anfrage nicht zwischen Benutzern unterscheiden. Die PHP-Sitzungssteuerung gibt dem Benutzer einen Schlüssel (eine verschlüsselte Sitzung-Zeichenfolge), der auch ein Beweis für die Identität des Benutzers ist. Der Server speichert die Box (Datenbank, Speicherdatenbank oder Dateien), die die Box enthält die verschiedenen variablen Informationen des Benutzers.

Wo ist dieser Schlüssel?
1, URL Abfrage Zeichenfolge
2, Browser Cookie

Traditionelle PHP-Sitzung verwendet

<?php
//page1.php 启动一个会话并注册一个变量session_start();
$_SESSION[&#39;user_var&#39;] = "hello,codekissyoung!";
//这里的可以将$_SESSION理解为用户的箱子,实际的实现是php在服务器端生成的小文件
?>
<?php
//page2.php
session_start();
echo $_SESSION[&#39;user_var&#39;];
//通过钥匙访问自己的箱子内的变量
$_SESSION[&#39;user_var&#39;] = "bey,codekissyoung!";
<?php//page3.php 销毁钥匙,一般在用户注销时,访问page3.php文件session_start();
session_destroy();?>

Stellen Sie eine Frage: Wo ist der Schlüssel? Haben Sie den Vorgang, dem Benutzer den Schlüssel zu geben, nicht gesehen?
Dieser Vorgang wird für uns von PHP hinter den Kulissen ausgeführt. Da Sie page1.php besuchen und das Programm session_start(); ausführen, generiert PHP es basierend auf einigen aktuellen Bedingungen (Benutzer-IP, Browsernummer, Uhrzeit). usw.) Eine PHPSESSID-Variable, nachdem die http-Antwort an den Client zurückgegeben wurde, ist diese PHPSESSID bereits in Ihrem Browser-Cookie gespeichert. Jedes Mal, wenn Sie diesen Domainnamen erneut besuchen, wird die PHPSESSID an den Server gesendet. Diese PHPSESSID ist der Benutzerschlüssel, von dem ich hier spreche.

Noch eine Frage: Die Sicherheit dieser PHPSESSID: Ist sie leicht zu stehlen, leicht zu fälschen und leicht zu manipulieren?
Die Verwendung von HTTPS verhindert Manipulationen. Verwenden Sie nicht PHPSESSID, sondern generieren Sie einen geheimen Schlüssel für den Benutzer, um Fälschungen zu verhindern. Ob es leicht zu stehlen ist, darüber gibt es eigentlich keine Untersuchungen. Wenn Ihr Computer beispielsweise mit dem Internet verbunden ist und Hacker in Ihren Computer eindringen.

Speichern Sie den generierten geheimen Schlüssel im Browser-Cookie

设置cookiesetCookie(&#39;key&#39;,&#39;value&#39;,time()+3600);
删除cookiesetCookie(&#39;key&#39;,&#39;&#39;,time()-1);

Erreichen Sie Single Sign-On: Sitzungsfreigabe

Single Sign-On: Teilen Sie Single Sign-On zwischen Mehrere Subsysteme Mit einem Benutzerauthentifizierungssystem können Sie auf alle Subsysteme zugreifen, indem Sie sich an einem Ort anmelden.
Stellen Sie sich dieses Szenario vor: Gehen Sie davon aus, dass die PHP-Umgebungen der Server A und B identisch sind. Der Benutzer hat seinen Schlüssel auf Server A erhalten und dann den Schlüssel genommen, um auf Server B zuzugreifen. Kennt er Server B?
Offensichtlich nicht, der von Server A generierte Schlüssel wird vom Server nicht erkannt.
Lösung: Unabhängig davon, ob der Benutzer auf A oder B zugreift, speichere ich den generierten Schlüssel in C (der gleichen Datenbank oder dem gleichen Cache-System). Wenn der Benutzer erneut auf A oder B zugreift, werden sowohl A als auch B C fragen: Dies Ist der Schlüssel des Benutzers korrekt? Wenn es korrekt ist, kann der Benutzer die in A oder B gespeicherte Box verwenden.

<?php
session_regenerate_id();
//重置 session  字符
$session_info=array(&#39;uid&#39;=>$uid,&#39;session&#39;=>session_encrypt(session_id().time()));
//下一步将,$session_info 存到 C 中

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Beispielcode der PHP-Sitzungssteuerung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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