Heim Backend-Entwicklung PHP-Tutorial PHP implementiert ein Authentifizierungsbeispiel durch Sitzungssteuerung

PHP implementiert ein Authentifizierungsbeispiel durch Sitzungssteuerung

May 31, 2018 pm 02:21 PM
php 实现 Identität

In diesem Artikel wird ein Beispiel für die PHP-Authentifizierung durch Sitzungssteuerung vorgestellt. Die Authentifizierung der Identität besteht darin, Daten über eine Sitzung zu übermitteln. Freunde in Not können kommen und es herausfinden.

Die Idee der Sitzungskontrolle besteht darin, Benutzer basierend auf einer Sitzung auf der Website verfolgen zu können. Der detaillierte Code ist hier zusammengestellt, Freunde in Not können darauf verweisen.

Übersicht

Das http-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 Sitzungszeichenfolge), der auch ein Beweis für die Identität des Benutzers ist. Der Server speichert die Box (Datenbank, Speicherdatenbank oder Datei), die mit diesem Schlüssel geöffnet werden kann Verschiedene variable Informationen des Benutzers.

Traditionelle PHP-Sitzung mit

<?php
//page1.php 启动一个会话并注册一个变量
session_start();
$_SESSION[&#39;user_var&#39;] = "hello,codekissyoung!";
//这里的可以将$_SESSION理解为用户的箱子,实际的实现是php在服务器端生成的小文件
?>
Nach dem Login kopieren

<?php
//page2.php
session_start();
echo $_SESSION[&#39;user_var&#39;];//通过钥匙访问自己的箱子内的变量
$_SESSION[&#39;user_var&#39;] = "bey,codekissyoung!";
?>
Nach dem Login kopieren

<?php
//page3.php 销毁钥匙,一般在用户注销时,访问page3.php文件
session_start();
session_destroy();
?>
Nach dem Login kopieren

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 ausgeführt wird, generiert session_start(); Nummer, Zeit usw.) eine PHPSESSID-Variable Wenn die HTTP-Antwort an den Client zurückgegeben wird, ist diese PHPSESSID bereits in Ihrem Browser-Cookie gespeichert. Bei jedem erneuten Besuch dieses Domainnamens 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 kann Manipulationen verhindern. 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

  • Cookie setzen

  • setCookie (' key','value',time()+3600);

  • Cookie löschen

  • setCookie('key','' ,time ()-1);

Single Sign-On realisieren: Sitzungsfreigabe

Single Sign-On: Teilen Sie einen Satz Benutzerauthentifizierung zwischen mehreren Subsystemen des Systems , und Sie können auf alle Subsysteme zugreifen, indem Sie sich von einem Ort aus anmelden.

Stellen Sie sich dieses Szenario vor: Gehen Sie davon aus, dass die PHP-Umgebungen der Server A und B gleich 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 Server erkennt den von Server A generierten Schlüssel nicht.

Lösung: Unabhängig davon, ob der Benutzer auf A oder B zugreift, wird der generierte Schlüssel in C (der gleichen Datenbank oder dem gleichen Cache-System) gespeichert. Wenn der Benutzer erneut auf A oder B zugreift, werden sowohl A als auch B wird Fragen wir C: Ist der Schlüssel dieses 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 中
?>
Nach dem Login kopieren

Das Folgende ist ein Beispiel für die PHP-Authentifizierung durch Sitzungssteuerung

Authentifizierungsanwendungstext: authmain.PHP

<?php 
//开启一个会话 
session_start(); 
 
if((!isset($userid))||(!isset($password))) { 
  $userid=$_POST[&#39;userid&#39;]; 
  $password=$_POST[&#39;password&#39;]; 
//连接数据库 
$db_conn=new mysqli("localhost", "root", "","auth"); 
if(mysqli_connect_errno()){ 
  echo &#39;连接数据库失败:&#39;.mysqli_connect_error(); 
  exit(); 
} 
//执行SQL查询语句 
$query="SELECT * FROM authorized_users WHERE name=&#39;".$userid."&#39; and password=sha1(&#39;".$password."&#39;)"; 
$result=$db_conn->query($query); 
if($result->num_rows>0){ 
  //注册一个会话变量 
  $_SESSION[&#39;valid_user&#39;]=$userid; 
} 
//断开数据库连接 
$db_conn->close(); 
} 
?> 
<!DOCTYPE html> 
<html> 
<head> 
  <meta charset="UTF-8"> 
  <title>身份验证</title> 
</head> 
<body> 
<h1>主页</h1> 
<?php 
//判断用户是否已经登录 
if(isset($_SESSION[&#39;valid_user&#39;])){ 
  echo $_SESSION[&#39;valid_user&#39;].&#39;,您好,你已经登录&#39;; 
  echo &#39;<a href="logout.php">退出登录</a><br/>&#39;; 
}else{ 
  if(isset($userid)){ 
    echo &#39;您没有登录成功&#39;; 
  }else{ 
    echo &#39;您还没有登录<br/>&#39;; 
  } 
  ?> 
  <form method="post" action="authmain.php"> 
    <p>用户名:<input type="text" name="userid"></p> 
 
    <p>密码:<input type="password" name="password"></p> 
 
    <p><input type="submit" name="submit" value="登录"></p> 
  </form> 
<?php 
} 
?> 
<br/> 
<a href="members_only.php">登录进入</a> 
 
</body> 
</html>
Nach dem Login kopieren

Gültige Benutzerprüfung für Website: member_only.php

<!DOCTYPE html> 
<html> 
<head> 
  <meta charset="UTF-8"> 
  <title>身份验证</title> 
</head> 
<body> 
<?php 
//启用会话 
session_start(); 
 
echo &#39;<h1>会员有效</h1>&#39;; 
if(isset($_SESSION[&#39;valid_user&#39;])){ 
  echo "<p>".$_SESSION[&#39;valid_user&#39;].",您好,您已经登录成功</p>"; 
  echo &#39;<p>会员可享受折扣优惠</p>&#39;; 
}else{ 
  echo &#39;<p>您还没有登录成功</p>&#39;; 
  echo &#39;<p>只有登录成功才能查看此页</p>&#39;; 
} 
echo &#39;<a href="authmain.php">返回主页</a>&#39;; 
?> 
</body> 
</html>
Nach dem Login kopieren

Protokoll Entfernen Sie die Sitzungsvariable und zerstören Sie die Sitzung: logout.php

<?php 
//启用会话 
session_start(); 
$olduser=$_SESSION[&#39;valid_user&#39;]; 
//注销会话变量 
unset($_SESSION[&#39;valid_user&#39;]); 
//销毁会话 
session_destroy(); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
  <meta charset="UTF-8"> 
  <title>退出登录</title> 
</head> 
<body> 
<h1>您退出登录了!</h1> 
<?php 
if(!empty($olduser)){ 
  echo &#39;退出登录了<br/>&#39;; 
}else{ 
  echo &#39;您没有登录过,所以当然也不存在退出登录<br/>&#39;; 
} 
?> 
<a href="authmain.php">返回主页</a> 
</body> 
</html>
Nach dem Login kopieren

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, das geht nützlich sein, um allen beim Lernen zu helfen.

Verwandte Empfehlungen:

php Zusammenfassung der Methoden zum Öffnen von Formatdateien

Memcache in der PHP-Datenbank Verwendung

phpDetaillierte Erläuterung der Verwendung rekursiver Funktionsfälle

Das obige ist der detaillierte Inhalt vonPHP implementiert ein Authentifizierungsbeispiel durch Sitzungssteuerung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

CakePHP-Protokollierung CakePHP-Protokollierung Sep 10, 2024 pm 05:26 PM

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

See all articles