Autorisierung und Authentifizierung in PHP: vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Autorisierung und Authentifizierung in PHP: So schützen Sie Ihre Website



Sicherheit ist einer der Schlüsselaspekte jeder Webanwendung. In PHP werden Authentifizierung (Überprüfung der Benutzeridentität) und Autorisierung (Festlegung seiner Zugriffsrechte) mit integrierten Werkzeugen implementiert: Sessions, Cookies, Passwort-Hashing und Datenbankarbeit. In diesem Artikel behandeln wir den gesamten Zyklus der Erstellung eines Systems für Login, Registrierung und Zugriffsbeschränkung in PHP.



1. Grundlegende Konzepte



  • Authentifizierung — der Prozess der Überprüfung, ob ein Benutzer der ist, der er vorgibt zu sein (normalerweise durch Login und Passwort).
  • Autorisierung — die Überprüfung, ob ein authentifizierter Benutzer berechtigt ist, eine bestimmte Aktion auszuführen (z. B. Zugriff auf das Admin-Panel).
  • Session — ein temporärer Datenspeicher auf dem Server, der über eine eindeutige ID (Session-ID) mit einem bestimmten Besucher verknüpft ist.
  • Passwort-Hashing — die Umwandlung eines Passworts in einen irreversiblen String zur sicheren Speicherung in der Datenbank.


2. Benutzerregistrierung



Der erste Schritt ist die Erstellung eines Registrierungsformulars und eines Handlers. Das Passwort wird niemals im Klartext gespeichert – wir verwenden die Funktion password_hash().



2.1. Registrierungsformular (register.php)



<form method="post" action="register_handler.php">    <input type="text" name="username" placeholder="Benutzername" required>    <input type="email" name="email" placeholder="E-Mail" required>    <input type="password" name="password" placeholder="Passwort" required>    <button type="submit">Registrieren</button></form>


2.2. Registrierungs-Handler (register_handler.php)



<?php// Verbindung zur Datenbank (PDO)$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');

$username = $_POST['username'];$email = $_POST['email'];$password = password_hash($_POST['password'], PASSWORD_BCRYPT); // hashen

$stmt = $pdo->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");$stmt->execute([$username, $email, $password]);

header('Location: login.php');?>


Verwenden Sie PASSWORD_BCRYPT — es generiert automatisch einen Salt und gilt als ausreichend sicher.



3. Authentifizierung (Anmeldung)



Bei der Anmeldung vergleichen wir das eingegebene Passwort mit dem Hash aus der Datenbank mit Hilfe von password_verify() und erstellen eine Session.



3.1. Anmeldeformular (login.php)



<form method="post" action="login_handler.php">    <input type="text" name="username" placeholder="Benutzername" required>    <input type="password" name="password" placeholder="Passwort" required>    <button type="submit">Anmelden</button></form>


3.2. Anmelde-Handler (login_handler.php)



<?phpsession_start();$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');

$username = $_POST['username'];$password = $_POST['password'];

$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");$stmt->execute([$username]);$user = $stmt->fetch();

if ($user && password_verify($password, $user['password'])) { // Authentifizierung erfolgreich $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; $_SESSION['role'] = $user['role']; // für die Autorisierung header('Location: dashboard.php');} else { echo "Ungültiger Benutzername oder Passwort";}?>


4. Autorisierung (Zugriffsbeschränkung)



Nach der Authentifizierung erhält der Benutzer eine Rolle (z. B. 'user', 'admin', 'moderator'). Die Autorisierung überprüft diese Rolle, bevor Aktionen ausgeführt werden.



4.1. Einfache Rollenprüfung



<?phpsession_start();

// Prüfen, ob der Benutzer authentifiziert ist

Empfehlungen