Hallo. Ich möchte euch hier erklären wie man ein relativ einfaches Login system für unbegrenzt viele user mit PHP bauen kann, das ganze ist nicht schwer, man muss nur
ein paar Variablen einstellen!
Features:
- HTTP Authenticate
- Sessions
- Geht auf lima city
- benötigt keine mySQL datenbank!
Benötigt:
- Ein wenig Zeit
- Webhost mit PHP4+ , nehmen wir gleich lima-city.
___________
1. Grundlegende Schritte
Zuerst erstellen wir eine Datei, wir nennen sie mal 'nopermmision.htm', das wird die Datei die angezeigt wird, wenn der Benutzer beim Login auf abbrechen drückt.
Die Datei könnt ihr gestalten wir ihr wollt, z.B. "Zugriff verweigert, login erforderlich!", sehr einfallsreich ^^.
___
Nun erstellen wir wieder eine neue Datei, diesmal nennen wir sie 'access.php', das wird der eigentliche Teil des Systems.
___
Haben wir diese Datei erstellt, kommt die nächste: Wir nennen sie nun 'users.php', in ihr stehen die Benutzernamen und Passwörter drin.
___
Zussammenfassung Punkt 1:
- Datei 'nopermission.htm' erstellen und nach Wünschen gestalten
- Datei 'access.php' erstellen
- Datei 'users.php' erstellen
Das wars jetzt auch schon, nun kommt der nächste Teil...
2. Benutzer Konfigurieren
Wir öffnen jetzt die erstellte Datei 'users.php' und schreiben folgendes hinein:
<?php
$users = array();
$users['1_username'] = 'DEIN_BENUTZERNAME';
$users['1_password'] = 'DEIN_PASSWORT';
?>
Nun haben wir den Benutzer 'DEIN_BENUTZERNAME' erstellt, wenn du später mehrere Benutzer hinzufügen willst musst du immer nur die zwei Zeilen kopieren und
einfügen, wenn du mehrer Benutzer einfügst müsste es dann etwa so aussehen:
<?php
$users = array();
$users['1_username'] = 'furzi';
$users['1_password'] = 'hund';
$users['2_username'] = 'gregor';
$users['2_password'] = 'maus';
$users['3_username'] = 'sissi';
$users['3_password'] = 'handschuh';
?>
Also bei jedem Benutzer die Zahl vorne um 1 erhöhen.
3. Das eigentliche System
Wenn wir Schritt 2 erledigt haben, öffnen wir die Datei 'access.php' und fügen folgenden Text ein:
<?php
// Hier musst du den Namen des Login- Cookies angeben
$session_cookie = 'protected_page';
// Hier gibst du die Sekunden an, die der Benutzer eingeloggt bleiben soll, standard 3600 sekunden = 1 stunde
$cookie_time = 3600;
// Hier kannst du den Namen deiner geschützten Site angeben
$site_name = 'Protected';
// Hier gibst du den Namen des Fehlerfiles wenn der User auf Abbrechen drückt an
$errorfile = 'nopermission.htm';
// Hier gibst du den Namen des Benutzerfiles an
$userfile = 'users.php';
// Ab hier nix mehr verändern
include $userfile;
$session = array();
function login($errorfile,$site_name) {
header("WWW-Authenticate: Basic realm=\"". $site_name ."\"");
header("HTTP/1.0 401 Unauthorized");
include $errorfile;
exit;
}
if (isset($_SERVER['PHP_AUTH_USER'])) {
$session['exists'] = true;
$session['username'] = $_SERVER['PHP_AUTH_USER'];
$session['password'] = $_SERVER['PHP_AUTH_PW'];
}else{
$session['exists'] = false;
login($errorfile,$site_name);
}
$accounts=count($users);
$counter=0;
while ($accounts != $counter) {
if (!empty($users[$counter . '_username']) && $users[$counter . '_username'] == $_SERVER['PHP_AUTH_USER']) {
$user_exists=true;
break;
}else{
$counter++;
$user_exists=false;
}
}
if ($user_exists != true) {
login($errorfile,$site_name);
}
if ($users[$counter . '_password'] != $session['password']) {
login($errorfile,$site_name);
}else{
setcookie ($session_cookie, 'session_exists', time()+$cookie_time,'/',$_SERVER['HTTP_HOST']);
$login_correct=true;
}
if (!isset($_COOKIE[$session_cookie]) && $login_correct == true) {
login($errorfile,$site_name);
}
?>
Nun musst du nur noch die Kommentierten Variablen nach deinen Wünschen verändern (oder auch nicht ^^) und fast ist alles fertig!
4. Schützen der Dateien
Um nun deine Dateien zu schützen müssen sie die endung '.php' haben.
Nun fügst du ganz oben, vor dem Inhalt diesen Code ein:
<?php
include 'access.php';
?>
Jetzt müsste das ganze so aussehen:
<?php
include 'access.php';
?>
<html>
<head>
<title>Geschützte Site</title>
</head>
<body>
TEXTTEXTTEXT
</body>
</html>
Das wars auch schon, hoffentlich bringt euch das Tutorial was!
greetz, redcow
Für weitere Fragen mailt mir bitte:
bravsein@gmx.at
mailclient@gmx.net