Hallo zusammen,
mit meinem Projekt Homepage bin ich nun an der Stelle Passwortschutz angekommen. Dieser Schutz soll einfach eine ganze Seite vor Unbefugten absichern. Weil es kein super sicherer Passwortchutz sein muss (und auch ohne Datenbank), habe ich einfach mal die Idee von selfhtml weiterverwendet (
aktuell.de.selfhtml....kel/php/loginsystem/ ).
Es gibt 3 Dateien: Auth.php, Login.php, Logout.php.
Die Auth.php beinhalt:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| <?php session_start();
$hostname = $_SERVER['HTTP_HOST']; $path = dirname($_SERVER['PHP_SELF']);
if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) { header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php'); exit; } ?> |
und Login.php:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { session_start();
$username = $_POST['username']; $passwort = $_POST['passwort'];
$hostname = $_SERVER['HTTP_HOST']; $path = dirname($_SERVER['PHP_SELF']);
// Benutzername und Passwort werden überprüft if ($username == 'person' && $passwort == 'geheim') { $_SESSION['angemeldet'] = true;
// Weiterleitung zur geschützten Startseite if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') { if (php_sapi_name() == 'cgi') { header('Status: 303 See Other'); } else { header('HTTP/1.1 303 See Other'); } }
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php'); exit; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <title>Geschützter Bereich</title> </head> <body> <form action="login.php" method="post"> Username: <input type="text" name="username" /> Passwort: <input type="password" name="passwort" /> <input type="submit" value="Anmelden" /> </form> </body> </html> |
Nun der Anfang einer Seite, die Verschlüsselt werden soll:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| <?php include('auth.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <title>Geschützter Bereich</title> </head> <body> <h1>Herzlichen Glückwunsch!</h1> <p>Sie sind nun angemeldet.</p> <p>Sie können sich auch wieder <a href="logout.php">abmelden</a>.</p> </body> </html> |
Funktioniert soweit alles wunderbar. Nur müsste ich für jede Seite, die Geschützt werden soll, 3 eigene Dateien erstellen. Denn die Umleitung muss ja immer zu der Seite hinführen, die den Loginbereich aufgerufen hat.
Mir wäre es lieber, wenn ich die 3 Dateien universell einsetzten könnte. D.h, dass alle geschützte Dateien auf die gleichen 3 Dateien zugreifen, und die Login.php selbst erkennt, wohin er umleiten muss.
Meine Idee war, dass man der Auth.php einfach als Parameter den Namen der geschützten Seite gibt, und die den Parameter der Login.php weitergibt.
Aber ich kann ja beim "includen" keine Parameter übergeben
Ach, ich glaub ich machs mal wieder kompliziertet als es ist
Habe einfach keine Erfahrung in PHP...
Wie könnte man das Problem lösen?
Viele Grüße,
Littleben
Moderiert von Christian S.: Topic aus Off Topic verschoben am So 15.07.2012 um 12:45