Ihr k?nnt schon mal folgende Dateien erstellen:
- config.php
- login.php (Das Formular )
- check_login.php ( Datenvalidierung )
- valid_user.php ( ?berpr?fung )
- intern.php ( Die gesch?tzte Seite )
Wir erstellen die Datenbank "my_page" und folgende Tabelle names "my_user":
ID (INT, AUTO INCREMENT, NOT NULL und PRIMARY KEY)
Username (VARCHAR(30), NOT NULL)
Password (VARCHAR(30), NOT NULL)
Erkl?rung:
ID:
INT = Integer(Ganzzahl), kann immer nur eine ganze Zahl sein (1,2,3,4,...).
AUTO INCREMENT = Erh?ht sich nach anlegen jedes neuen Users von selbst um 1. Somit gehen wir sicher dass kein User die selbe ID hat.
NOT NULL = Selbsterkl?rend.
PRIMARY KEY = Anhand dieses Prim?rschl?ssels identifizieren wir einen User eindeutig anhand seiner ID, da diese ja nicht doppelt vorkommen kann (Im Gegensatz zum Usernamen).
Username:
VARCHAR = 1 bis 255 Zeichen (a,b,c,d..1,2,3,4,..). Durch die (30) begrenzen wir den Usernamen auf 30 Zeichen.
Fangen wir mal an. Moment,.. so jetzt.
Die config.php
define ("HOST", "localhost"); // Meistens der Lokale.define ("USER", "root"); // Username zur Datenbank.define ("PASS", "passwort"); // Euer Passwort.define ("DB", "my_page"); // Die erstellte Datenbank.mysql_connect(HOST, USER, PASS) OR die("Error: Keine Verbindung zum Server"); // Wir verbinden uns damit zum SQL-Server.mysql_select_db(DB) OR die("Error: Keine Verbindung zur Datenbank"); // Wir sagen welche Datenbank wir gerne verwenden m?chten.
Die login.php
<form method=post" action="check_login.php">Username: <input type="text" name="user">Password: <input type="password" name="pass"><input type="submit" name="submit" value="- Login -"></form>
Erkl?rung login.php
Wir erstellen ein Formular und verwenden zum Versenden die "post" Methode. Die eingegebenen Daten werden mittels action="" an die check_login.php ?bergeben. Wenn du dir hier schwer tust solltest du dir HTML Grundkenntnisse aneignen, denn das war reines HTML. Ja man kann die Datei auch login.html benennen.
Die check_login.php:
session_start();include_once("config.php");if (isset($_POST["user]) && isset($_POST["pass"])) { $user = mysql_real_escape_string(trim($_POST["user"])); $pass = mysql_real_escape_string(trim($_POST["pass"])); if (!empty($user) && !empty($pass)) { $sql = "SELECT Username, Password FROM my_user WHERE Username = '".$user."' AND Password = '".$pass."'";"; $result = mysql_query($sql) OR die("Die Anfrage konnte nicht gesendet werden ".mysql_error());
Erkl?rung check_login.php:
Mit session_start() starten wir eine Sitzung und inkludieren danach mit include_once() unsere config.php damit wir eine Verbindung mit der Datenbank herstellen.
Mit isset() ?berpr?fen wir ob die Variablen Username und Passwort von login.php ?bergeben wurden, denn man k?nnte ja direkt auf die check_login.php browsen und somit h?tte das ganze keinen Sinn.
Mit !empty() ?berpr?fen wir ob uns da nicht wer versucht hat ein leeres Formular zu senden.
Sind beide Bedingungen erf?llt deklarieren wir unseren Befehl an MySQL. Wir sagen w?hle den Usernamen und das dazugeh?rige Passwort ausgehend von den ?bermittelten Daten aus.
Jetzt verschicken wir mit mysql_query($sql) die Anfrage und speichern das Resultat in die Variable $result.
Nun fragen wir mit if(mysql_num_rows($result) != 1) ab ob er ein passendes Resultat gefunden hat, und zwar nur 1!
Ist dies der Fall so setzen wir $_SESSION["valid"] auf TRUE, $_SESSION["username"] auf $user (also den Usernamen) und leiten mit header() auf die intern.php weiter.
Falls nicht so kommt eine Fehlermeldung.
Die valid_user.php
if ($_SESSION["valid"] == FALSE) { session_start(); session_destroy(); header("Location: login.php"); exit();}
Erkl?rung valid_user.php:
Wir ?berpr?fen ob die global _SESSION["valid"] FALSE ist, wenn ja hei?t dass der Besucher ist nicht eingeloggt und hat somit kein Recht die Seite zu betreten, also mit header() wieder ab auf die login.php.
Mit session_destroy() "zerst?ren" wir sicherheitshalber die Sitzung.
Der Sinn dieser Datei ist es, sie ?berall dort zu includen (include()) wo die Seite gesch?tzt sein soll, also wo man sich zuerst eingeloggt haben muss um diese zu betreten.
Die intern.php
session_start();include_once("valid_user.php");echo "Willkommen im internen Bereich ".$_SESSION["username"]; [url=logout.php]Logout[/url]
Erkl?rung intern.php:
Wir starten die Sitzung und anhand der inkludierten "valid_user.php" wir ?berpr?ft ob der Besucher der Seite eingeloggt ist. Falls ja kommt die Meldung : Willkommen im internen Bereich + der Username.
So wir sind fast fertig, eine Datei fehlt noch.
Die logout.php
Erkl?rung logout.php:
Hier gibts nicht viel zu erkl?ren, die Sitzung wird wieder beendet und der Besucher zur?ck auf die login.php geleitet.
So das wars eigentlich schon. Ihr m?sst jetzt nur noch ?ber zB den phpmyadmin einen User und ein Passwort in der Tabelle my_user anlegen und k?nnt das Skript schon testen. Ich verliere bei dem "Editor" schnell den ?berblick so kann es gut sein dass sich Fehler eingeschlichen haben, also bitte melden wenn ihr was findet.
M?gliche Erweiterungen:
- Registerscript ( Um User anzulegen )
- md5 Passwort ( Passw?rter gehasht in der Datenbank ablegen )
greetz & hf, gene =)