So erstellen Sie ein PHP-Anmeldesystem für Ihre Website
Sie möchten ein Login-System in PHP integrieren? In diesem Artikel zeige ich Ihnen, wie Sie einen einfachen Login-Flow in PHP durchführen. Wir werden ein Anmeldeformular erstellen, die Anmeldeinformationen validieren und den Benutzer auf die Kontoseite umleiten. Ich würde auch einen Code hinzufügen, um den Benutzer abzumelden. Außerdem zeigen wir die Fehlermeldungen an, wenn die falschen Zugangsdaten eingegeben werden.
Für das Tutorial gehe ich davon aus, dass Sie den ‘md5’-Hash zum Speichern des Passworts verwenden. Ich würde den Code unter Berücksichtigung des md5-Hashs eines Strings schreiben. Möglicherweise verwenden Sie einen anderen Algorithmus. In diesem Fall müssen Sie die Abfrage gemäß Ihrem Algorithmus ändern.
Um den Login-Flow zu integrieren, benötigen wir eine Datenbanktabelle, die die Benutzerdaten speichert. Anhand dieser Tabelle überprüfen wir, ob der Benutzer die richtigen Anmeldeinformationen eingegeben hat oder nicht. Wenn die Benutzeranmeldeinformationen korrekt sind, sollten nur sie Zugriff auf die gesicherten Seiten haben.
In meinem Fall habe ich eine ‘Benutzer’-Tabelle erstellt und einige Dummy-Einträge hinzugefügt. Ich habe auch eine Spalte "Status" hinzugefügt, die verwendet wird, um herauszufinden, ob ein Konto aktiv ist oder nicht. Diese Spalte hat den ENUM-Datentyp mit den Werten 0 und 1.
- 1: Konto ist aktiv
- 0: Konto ist nicht aktiv
Erstellen Sie ein Anmeldeformular
Lassen Sie uns zunächst ein Anmeldeformular erstellen, in das Benutzer ihre Anmeldeinformationen eingeben können. Ich verwende ein Bootstrap-Framework, um ein Anmeldeformular zu erstellen. Meine index.php
Datei enthält den folgenden Code.
<!DOCTYPE html>
<html>
<head>
<title>Login Form</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-6">
<h3>Login Form</h3>
<?php if(!empty($error_message)) { ?>
<div class="alert alert-danger"><?php echo $error_message; ?></div>
<?php } ?>
<form method="post">
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" name="email" placeholder="Email" required />
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1" name="password" placeholder="Password" required />
</div>
<button type="submit" name="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</body>
</html>
Der obige Code zeigt das Anmeldeformular an, wie im folgenden Screenshot gezeigt.
Ich habe die Variable $error_message
im Code hinzugefügt, die die Anmeldefehler ausgibt.
PHP-Code zur Validierung der Benutzeranmeldeinformationen
Sie sind mit dem Anmeldeformular und der Datenbanktabelle fertig. Als nächstes müssen wir beim Absenden eines Formulars PHP-Code schreiben, der die Anmeldeinformationen des Benutzers mit den Datenbankeinträgen abgleicht. Wenn die Angaben korrekt sind, melden Sie den Benutzer am System an und leiten Sie zur myaccount.php
Seite weiter.
Erstellen Sie eine config.php
Datei und fügen Sie einen Code für die Datenbankverbindung hinzu.
<?php
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
if ($conn->connect_errno) {
echo "Error: ". $conn->connect_error;
}
?>
Ersetzen Sie die Platzhalter durch die tatsächlichen Werte.
Fügen Sie nun in der index.php
Datei vor dem Start des HTML-Tags den folgenden Code hinzu.
<?php
session_start();
require_once('config.php');
//if user is logged in redirect to myaccount page
if (isset($_SESSION['id'])) {
header('Location: myaccount.php');
}
$error_message = '';
if (isset($_POST['submit'])) {
extract($_POST);
if (!empty($email) && !empty($password)) {
$sql = "SELECT id, status FROM users WHERE email = '".$conn->real_escape_string($email)."' AND password = '".md5($conn->real_escape_string($password))."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
if($row['status']) {
$_SESSION['id'] = $row['id'];
header('Location: myaccount.php');
} else {
$error_message = 'Your account is not active yet.';
}
} else {
$error_message = 'Incorrect email or password.';
}
} else {
$error_message = 'Please enter email and password.';
}
}
?>
Hier im Code habe ich beim Überprüfen des Passworts die PHP-Methode md5 verwendet, vorausgesetzt, Sie haben das Passwort mit diesem Algorithmus gespeichert.
Abmeldecode
Der nächste Teil ist das Hinzufügen von Code zum Abmelden des Benutzers. Erstellen Sie dazu myaccount.php
Datei. Eine weitere Sache, die nur für angemeldete Benutzer zu handhaben ist, sollte auf diese Seite zugreifen.
meinkonto.php
<?php
session_start();
if (isset($_GET['action']) && ('logout' == $_GET['action'])) {
unset($_SESSION['id']);
}
if (isset($_SESSION['id'])) {
?>
<h3>Welcome User! <a href="?action=logout">Logout</a></h3>
<?php
} else { //redirect to login page
header('Location: index.php');
}
?>
Mit der PHP-Sitzung finden wir heraus, ob wir Zugriff auf diese Seite gewähren oder nicht. Wenn die Sitzung nicht festgelegt ist, leiten Sie den Benutzer auf die Anmeldeseite um.
Ich hoffe, Sie verstehen die Grundlagen des Aufbaus eines Login-Systems in PHP. Bitte teilen Sie Ihre Gedanken und Vorschläge im Kommentarbereich unten mit.
Zum Thema passende Artikel
- Benutzerregistrierung und Login-System in Laravel
- Google-Login in Laravel mit Laravel Socialite
- So erstellen Sie ein PHP-Registrierungssystem