Loginscript mit Sessions & Dateien

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Loginscript mit Sessions & Dateien

    Hallo, in diesem Tutorial wird gezeigt, wie man mit PHP ein kleines & aber dennoch schon sicheres Loginscript mit Sessions & Dateien schreibt. Viel Spaß!

    Zuerst einmal benötigen wir eine Seite wo wir uns "eintragen" können. Diese Datei nennen wir einfach mal eintragen.html:

    Source Code

    1. <form action="eintragen.php" method="post"> Dein Username:<br> <input type="text" size="24" maxlength="50" name="username"><br><br> Dein Passwort:<br> <input type="password" size="24" maxlength="50" name="passwort"><br> Passwort wiederholen:<br> <input type="password" size="24" maxlength="50" name="passwort2"><br> <input type="submit" value="Abschicken"> </form>



    Dann kommt die .php Datei mit der die Abspeicherung der Daten in einer user.txt getan wird. Diese Datei nennen wir einfach mal eintragen.php:

    PHP Source Code

    1. <?php
    2. $username = $_POST["username"];
    3. $password = $_POST["passwort"];
    4. $password2 = $_POST["passwort2"];
    5. if ($password == $password2)
    6. {
    7. $user_vorhanden = array();
    8. $passwort = md5($password);
    9. $userdatei = fopen ("user.txt","r");
    10. while (!feof($userdatei))
    11. {
    12. $zeile = fgets($userdatei,500);
    13. $userdata = explode("|", $zeile);
    14. array_push ($user_vorhanden,$userdata[0]);
    15. }
    16. fclose($userdatei);
    17. if (in_array($username,$user_vorhanden))
    18. {
    19. echo "Username schon vorhanden <br> <a href=\"eintragen.html\">zurück</a>";
    20. }
    21. else
    22. {
    23. $userdatei = fopen ("user.txt","a");
    24. fwrite($userdatei, $username);
    25. fwrite($userdatei, "|");
    26. fwrite($userdatei, $passwort);
    27. fwrite($userdatei, "\n");
    28. fclose($userdatei);
    29. echo "$username, deine Anmeldung war erfolgreich<br><a href=\"login.html\">zum Login</a>";
    30. }
    31. }
    32. else
    33. {
    34. echo "Die Passwörter sind nicht identisch<br> <a href=\"eintragen.html\">zurück</a> ";
    35. }
    36. ?>
    Display All


    Dann benötigen wir noch eine Art "Login-Page", diese nennen wir login.html:

    Source Code

    1. <form action="login.php" method="post"> Dein Username:<br> <input type="text" size="24" maxlength="50" name="username"><br><br> Dein Passwort:<br> <input type="password" size="24" maxlength="50" name="password"><br> <input type="submit" value="Login"> </form>



    Auch dazu benötigen wir wieder eine .php Datei um die Daten abzufragen, diese nennen wir login.php:

    PHP Source Code

    1. <?php
    2. $username = $_POST["username"];
    3. $passwort = $_POST["password"];
    4. $passwort = md5($passwort);
    5. $log=0;
    6. $userdatei = fopen ("user.txt","r");
    7. while (!feof($userdatei))
    8. {
    9. $zeile = fgets($userdatei,500);
    10. $userdata = explode("|", $zeile);
    11. if ($userdata[0]==$username and $passwort==trim($userdata[1]))
    12. {
    13. $_SESSION['username'] = $username;
    14. echo "Login war erfolgreich. <a href=\"geheim.php\">Geschützer Bereich</a>";
    15. $log = 1;
    16. }
    17. }
    18. fclose($userdatei);
    19. if ($log==0)
    20. {
    21. echo "Zugriff verweigert <a href=\"login.html\">Zurück</a>";
    22. }
    23. ?>
    Display All


    Anstatt nur Hallo $username registieren wir hier die Session username. Außerdem bekommt geben wir noch einen Link zum geschützen Bereich (geheim.php) aus.

    Und so sieht der geschütze Bereich (geheim.php) aus:

    PHP Source Code

    1. <?php
    2. session_start();
    3. if(!isset($_SESSION['username']))
    4. {
    5. echo "Bitte erst <a href=\"login.html\">einloggen</a>";
    6. exit;
    7. }
    8. ?>
    9. <html>
    10. Herzlich Willkommen im geschützen Bereich
    11. </html>
    Display All


    Alle geschützen Dateien müssen so aussehen, wie die ersten paar Zeilen von geheim.php.

    Falls ihr noch nicht die Version 4.1.0 benutzt, und somit der Script nicht funktioniert müsst ihr anstatt $_POST => $HTTP_POST_VARS schreiben und anstatt $_SESSION => $HTTP_SESSION_VARS

    Screenshots:
    [Blocked Image: http://s14.directupload.net/images/111212/qjvjlzto.png] [Blocked Image: http://screeny.secure-dev.de/rhQhktUp0HjOxx0M7.png] [Blocked Image: http://screeny.secure-dev.de/jQRKaFna5UBa4keBJ.png] [Blocked Image: http://screeny.secure-dev.de/247rvxR2dAo2ZzXT8.png]

    Ich hoffe euch hat das Tutorial ein wenig geholfen, mit freundlichen Grüßen
    Numex


    /edit: Fehler korrigiert
    /edit2: PHP-Tag bei login.php vergessen
    /edit3: Screenshots beigefügt

    Quelle: php-einfach.de

    The post was edited 4 times, last by Numex ().

  • Bitte die Quellenangabe einfügen.

    Ich finde diesen "Loginscripting" eigentlich nicht so gut, da die Daten in einem Textdokument gespeichert werden, es ist zwar dann besser für ein UCP gedacht der auf Dini bassiert, aber naja, ich würde dafür dennoch lieber MySQL nehmen.
    Aber nun gut, es ist nützlich und auch okey.


  • Ob man nun MySQL oder Dateien verwendet ist im Grunde egal, was entscheidet ist der Hash-Algorithmus (fälschlicherweise oftmals auch Verschlüsselung genannt). Da man den Zugriff von außen auf die Textdateien verbietet ist das sogar sicherer, da mit diesem Verfahren eine absolute Sicherheit geboten wird, an die MySQL oder andere Datenbanksysteme nie rankommen werden und können - alles was einen Server benötigt ist und bleibt angreifbar.

    Zum Tutorial:
    Mir fehlt die Erklärung. Du gibst dem Leser über jedem Codeabschnitt eine kleine Information was er macht, aber das war es. Ich würde Kommentare innerhalb des Codes begrüßen, in denen du die einzelnen Funktionen und Variablen knapp erklärst bzw. deren Funktion erläuterst.

    Ein kleiner letzter Tipp am Rande: Nutze file_get_contents() und file_put_contents(). Sie sind schneller und verbrauchen weniger Leistung, haben also rundum mehr Performance.

  • @dead:

    mit der Sicherheit hast du schon recht aber eine Datenbank ist unter gleichen Vorraussetzungen viel performanter. Und wenn du nur wenige User hast mag das mit Textdateien noch funktionieren. Nur Loginsysteme haben die unangenehme Eigenschaft das da zur Gesamtlaufzeit verglichen ein sehr hohes Userwachstum herrscht.
    [tabmenu]
    [tab='Werbung in eigener Sache']
    Du suchst einen Instant Messenger dessen Verbindung voll verschlüsselt ist? Weiterhin soll er mit anderen Instant Massenging Protokollen verknüpfbar sein? Außerdem möchtest du weltweit erreichbar sein (ähnlich icq und msn)? - Dann schick mir Post und erhalte ein unverbindliches, auf alle Fälle kostenloses, Angebot:
    [Blocked Image: http://easy-scripting.net/icon/vCollection/pmEmptyS.png]
    [tab='Vorstellung']
    NurPech
    [tab='meine Tutorials']
    [subtab='C#']

    [subtab='PHP']

    [/tabmenu]

    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von [Blocked Image: http://i.creativecommons.org/l/by-nc-nd/3.0/80x15.png] verwendet werden