Login mit Datenbankabgleich
Login mit Datenbankabgleich
Betrachen wir zunächst die Funktion anhand eines Programmablaufplans:

Im PHP-Script login.php werden mit einem Formular Benutzername und Kennwort übertragen. Selbiges Script prüft dann, ob diese Anmeldedaten in der Datenbank vorhanden sind. Falls ja, wird eine Sessionvariable angelegt, damit man sich nicht für jeden Seitenaufruf neu anmelden muss. Andernfalls wird eine entsprechende Fehlermeldung ausgegeben.
login.php
<?php
include "db.inc.php"; //Einbindung der Include-Dateien
include "header.inc.php";
head("Login"); //Aufruf der Funktion head
if(isset($_POST['user'])) //Falls Benutzername uebertragen wurde
{
$result = query("SELECT * FROM password WHERE user = '$_POST[user]' AND pw = '$_POST[pw]'");
if(mysqli_num_rows($result) == 1) //Anzahl = 1 (Anmeldedaten in DB vorhanden) -> einloggen
{
session_start(); //Session starten
$_SESSION["user"] = $_POST['user']; //Sessionvariable user wird mit Username in Cookie gespeichert
echo "eingeloggt";
}
else
echo "Falsche Anmeldedaten";
}
?>
<form action="login.php" method="post"> <!-- Login-Formular -->
<p>
<label>Benutzername:</label>
<input name="user" required placeholder="Ihr Benutzername" />
</p>
<p>
<label>Kennwort:</label>
<input type="password" name="pw" required placeholder="Ihr hinterlegtes Passwort" />
</p>
<p>
<button>Login</button>
</p>
</form>
<a href = "logged.php">logged?</a><br>
<?php
if(isset($_SESSION["user"])) //Sessionvariable user vorhanden, logout anbieten
echo "<a href = 'logout.php'>logout</a><br>";
foot(); //Aufruf der Funktion foot
?>
logout.php
<?php
include "header.inc.php";
head("Logout"); //Aufruf der Funktion head
session_start(); //Startet vorhandene Session
session_destroy(); //Sessiondaten loeschen
header("location:login.php"); //Weiterleitung
exit();
?>
logout.php zerstört die Sessionvariable und leitet danach zurück zu login.php.
Andere Dateien (Bsp. logged.php)

<?php
include "header.inc.php";
head("Logged?"); //Aufruf der Funktion head
session_start(); //Startet vorhandene oder neue Session
if(isset($_SESSION["user"])) //Sessionvariable user vorhanden -> eingelogged
echo "$_SESSION[user] logged in<br>";
else //Nein -> Weiterleitung zum Login
{
header("location:login.php");
exit(); //Abbruch, nach Weiterleitung
}
echo "<a href = 'logout.php'>logout</a><br>";
foot();
?>
Jede andere Seite prüft zuerst, ob die Sessionvariable vorhanden ist, erst dann werden eventuell Ausgaben gemacht, ansonsten natürlich auch wieder zum Login-Script zurück weitergeleitet.
