yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Login mit Sessions ohne MySql



Erstmal: Hallo allerseits.
Endlich mal wieder ein Artikel, um ihn dem Archiv von yubb.de hinzufügen:
Ein Login Script mit Sessions, der es erlaubt so viele User wie möglich anzulegen und eine Logoutfunktion hat.

Als erstes braucht man das Login HTML-Formular:

HTML-Formular:
<form action="check.php" method="post">
<table width="200" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>Name:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="pass"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="login" value="Login">
</td>
</tr>
</table>
</form>
<div align="center">


Wie man sehen kann leitet das Formular auf check.php weiter, um die Daten zu prüfen.:
check.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
<?php
session_start
();

$trennzeichen "|";

if(isset(
$_POST['login'])) {
    
// Name und Passwort einer Variablen zuordnen
    
$name $_POST['name'];
    
$pass $_POST['pass'];
    
    
// Passwort codieren
    
$pass md5($pass); 
    
    
// Nach Username suchen
    
if(file_exists("user/".$name.".txt")) {
        
$file file("user/".$name.".txt");
        
$user_vorhanden TRUE;
    } else {
    echo 
"Benutzername nicht gefunden";
    
$user_vorhanden FALSE;
    }
    
    
// Wenn User vorhanden: Logindaten zwischenspeichern
    
if($user_vorhanden) {
        
$arr explode($trennzeichen$file['0']);
        
$a_name $arr['0'];
        
$a_pass $arr['1']; 
        
        
// Benutzernamen und Passwort verifizieren
        
if($a_name == $name && $a_pass == $pass) {
            
$_SESSION["logedin"] = TRUE;
            echo 
"Login erfolgreich!<br>Bitte klicken Sie <a href=\"index.php\">hier</a> um zur Internen Startseite zu gelangen.";
        } else {
            echo 
"Die Daten waren falsch.";
        }
    }
}
?>

Diese Datei macht nichts anderes, als zu sehen, ob die eingegebenen Daten, die in einer Datei gespeichert sind, richtig sind bzw. ob es sie überhaupt giebt.

Ich will an dieser Stelle gleich mit der Datei, in der die Userdaten gespeichert werden, fortfahren.
Diese Dateien sollten in einem Unterordner angelegt werden, der den Namen "user" trägt. In diesem Unterordner werden Textdateien angelegt, die den Namen des Loginnamens tragen. In dieser txt-datei sollte dann stehen "username|passwort", wobei das Passwort mit md5() verschlüsselt wird. Wenn der Benutzername zB. "lampenschaukler" heißt, und das Passwort "glühlampe" lautet, ist der Name der Textdatei "lampenschaukler.txt". Der Dateiinhalt ist dann wie folgt: "lampenschaukler|7c481887ae88b2d5ff618607531bdd1d" (Verschlüsseln kannst du die Passworter auf einer Verschlüsselungsseite. Es werden keinerlei daten gespeichert.).

Und dann gibt es noch die Logout-Seite. Nennen wir sie sinnigerweise "logout.php":
logout.php:
1
2
3
4
5
6
<?php
session_start
();
session_unset ("logedin");
session_destroy();
echo 
"Erfolgreich ausgeloggt!<br><a href=\"http://deine-seite.at\">zur Startseite</a>";
?>

Hier wird die Session gelöscht --> Man ist ausgeloggt.

In jeder Datei, die geschützt sein soll, muss in der ersten Zeile, vor allem Anderen, folgender Code stehen:
Code in index.php:
1
2
3
<?php
session_start
();
?>

Diese Aufforderung muss nämlich ganz am Anfang deiner Webseite stehen, da sonst ein Fehler auftritt.

Damit der User weiß, dass er er eingeloggt ist und ihm die Möglichkeit zu geben, sich auch wieder auszuloggen, benutzen wir folgenden Code:
Anfang einer geschützten Datei:
1
2
3
4
5
<?php
session_start
();
if(
$_SESSION["logedin"] == TRUE) {
    echo 
"Sie sind eingeloggt.<br><a href=\"index_index.php?site=logout\">Ausloggen</a>";
?>


und am Ende:
Ende einer geschützten Datei:
1
2
3
4
5
<?php
    
} else {
    echo 
"Sie sind nicht eingeloggt.";
}
?>


Hier wird überprüft, ob der User eingeloggt ist. Wenn ja, wird alles zwischen den beiden Codeteilen angezeigt. Ansonsten bekommt er nu eine Fehlermeldung

Ich hoffe, dass euch das Script gefällt, und eine Löung für alle ist, die keinen Server mit einer MySQL Datenbank haben.
Mfg fabs



Weiterführende Links:
http://www.fabian.at.tc

Geschrieben von fabs am 08.11.2004 (21243x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

@.chR1z:
Dann läuft bei dir kein PHP-Server.
Geschrieben von Phil Marx
hallo an alle! bitte helft mir!
ich hab da ein problem mit diesem script. immer wenn ich mich einloggen will, werde ich gefragt, ob ich die datei "check.phph", die ja eigentlich geöffnet werden soll, speichern oder öffnen möchte. ich habe das gesamte packet online gestellt. bitte sieht es euch an und helft mir! danke!

PAKET: people.freenet.de/lpd0/scripte/login-system.rar
REPLY: bloody_biz@hotmail.com
Geschrieben von .chR1z
das script funzt aber immer is das passwort falsch obwohl das normal richtig sein muss was is das ?!!!!
Geschrieben von MaFFi
Hey, ich hab folgende Frage:
Wie gebe ich auf irgendeiner Seite den Namen des derzeitig eingeloggten Benutzers aus?
Geschrieben von Huzliputz