tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
360
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kaeschdin Kaeschdin ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Beiträge
    145
    Hallo zusammen,

    auf der Suche nach einem einfachen Login-Skript bin ich auf diese Seite gestoßen:

    http://www.administrator.de/php_-_ei..._sessions.html

    Klappt auch alles ganz gut, ABER:

    Laut diesem Skript ist eine Fehlermeldung ("Bitte fülle beide Felder aus") nur vorgesehen, wenn eines der beiden Felder nicht ausgefüllt wurde. Wenn nun aber ein Feld (oder beide) FALSCH ausgefüllt wurden, kommt keine Fehlermeldung (der Inhalt der richtigen Zielseite wird aber auch nicht angezeigt - der Inhaltsbereich ist einfach leer).

    Wie muss das Skript erweitert werden, um bei falschen Nutzer-/Passwortdaten eine Fehlermeldung auszugeben?

    Danke und viele Grüße,

    Kerstin
     

  2. #2
    crazy_root crazy_root ist offline Mitglied
    Registriert seit
    Sep 2007
    Beiträge
    22
    PHP-Code:
    <?php

    $user 
    '';
    $pw '';

    //nun kommen die if abfragen die das ganze relativ sicher machen 
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        
    //post variablen einfach speichern 
        
    $user trim($_POST['user']); 
        
    $pw trim($_POST['pw']); 
        
        if(empty(
    $user) || empty($pw))
        { 
            echo 
    "<b>Bitte fülle  ";
            if (empty(
    $user)) echo 'das Feld User ';
            if (empty(
    $user) && empty($pw)) echo 'und ';
            if (empty(
    $pw)) echo 'das Feld Passwort ';
            echo 
    "aus!</b>"
        } 
        elseif (
    $user == $user_name AND $pw == $user_pass
        { 
            
    $_SESSION['user'] = $user
            
    $_SESSION['pw'] = $pw
            
    header('Location: index2.php'); 
            exit();
        }
        else
        {
            echo 
    '<b>Falscher User oder falsches Passwort!</b>';
        }



    echo 
    '<form name="login" method="post" action="'.$_SERVER['PHP_SELF'].'"> 
    User Name: <input type="text" name="user" value="'
    .$user.'"> User Passwort:  <input type="password" name="pw" value="'.$pw.'"> 
    <input type="submit" name="Submit" value="einloggen"> 
    </form>'


    ?>

    Da header() so nicht mehr funktioniert, solltest du das Script ganz am Anfang vor dem HTM-Code stellen und die Ausgaben in einer Variable speichern...
    Habs leider nicht getestet!
    Geändert von crazy_root (29.08.08 um 16:10 Uhr)
     

  3. #3
    Kaeschdin Kaeschdin ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Beiträge
    145
    Danke erstmal.

    Im alten Skript standen der korrekte Username und das Passwort drin (ist immer gleich). Bei dir finde ich das jetzt nicht.
     

  4. #4
    Back2toxic Back2toxic ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Ort
    Pfalz
    Beiträge
    219
    Nutzername und Passwort kannst du einfach durch
    PHP-Code:
    $user_name "<hier benutzername einfügen>";
    $user_pass  "<hier passwrot einfügen>"
    selbst bestimmen. das ganze fügst du einfach zwischen
    PHP-Code:
        $user trim($_POST['user']); 
        
    $pw trim($_POST['pw']); 
    und
    PHP-Code:
        if(empty($user) || empty($pw)) 
    ein.

    Gruß
     

  5. #5
    crazy_root crazy_root ist offline Mitglied
    Registriert seit
    Sep 2007
    Beiträge
    22
    @Kaeschdin

    Sieht jetzt besser aus

    PHP-Code:
    <?php
    //login script 

    //session beginnen, immer ganze oben vor html Ausgabe! 
    session_start(); 

    //Passwort und Benutzername wird hier Manuell eingestellt 
    //diese Daten musst du anpassen 
    $user_name "test"
    $user_pass "123456"

    $login_msg '';

    /*
     Hier kommt mein Script rein
     anstatt 'echo benutze'' '$login_msg .= '
     */

    //html ausgabe
    // Hier brauchst du kein PHP mehr!
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    ...
    ...
    <?php
    // $login_msg
    if (!empty($login_msg)) echo $login_msg;
    ?>
    <!-- Formular -->
    <form name="login" method="post" action="<?=$_SERVER['PHP_SELF']?>"> 
    User Name: <input type="text" name="user" value="<?=$user?>"> User Passwort:  <input type="password" name="pw" value="<?=$pw?>"> 
    <input type="submit" name="Submit" value="einloggen"> 
    </form>
    <!-- Formular Ende -->
    ...
    //edit:
    Es fehlte eine geschlossene Klammer!
    Mein Editor meckert ja sofort, aber in einer Textbox nicht
    Geändert von crazy_root (29.08.08 um 17:11 Uhr)
     

  6. #6
    Kaeschdin Kaeschdin ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Beiträge
    145
    Irgendwas passt nicht.

    Er meckert darüber:

    if (!empty($login_msg) echo $login_msg;

    Und zwar: Parse error: syntax error, unexpected T_ECHO ...

    Vielleicht liegt es aber auch an mir. PHP ist nicht mein Ding.

    Im Prinzip brauche ich die index2.php aus dem von mir geposteten Link nicht. Ich möchte ein Formular, wo ich User und PW eingebe und bei richtiger Eingabe auf der Seite login.html lande.

    Ich habe jetzt vor <!DOCTYP... in meiner php-Datei den Teil deines zuletzt geposteten Skripts eingefügt, der auch dort vor <!DOCTYP ... steht. Muss ich an dem Teil was ändern? Weil da ja drin steht: /*
    Hier kommt mein Script rein
    anstatt 'echo benutze'' '$login_msg .= '
    */

    Den Rest habe ich 1:1 im Inhalts-DIV eingefügt.
     

  7. #7
    Back2toxic Back2toxic ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Ort
    Pfalz
    Beiträge
    219
    Naja, in der Fehlermeldung steckt doch schon alles drin

    unexpected T_ECHO bedeuted, dass du irgendwo eine Ausgabe machen willst, die vorherige Anweisung aber nicht abgeschlossen ist. Da fehlt mit hoher Wahrscheinlichkeit nur ein Semikolon.
    Nach unexpected T_ECHO steht "in yyy.php on line xx", also tritt der Fehler in der Datei yyy.php in Zeile xx auf.
     

  8. #8
    Kaeschdin Kaeschdin ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Beiträge
    145
    Es hat eine Klammer gefehlt

    Bei richtiger Eingabe komme ich auf die Seite, bei falschen Daten erscheint die Fehlermeldung an der falschen Position, bei gar keiner Eingabe erscheinen wieder die Login-Felder.

    Es geht um diese Seite: http://www.schmellenkamp.de/onlinere...cher/login.php

    test
    123456

    Zielseite: login.html
    Geändert von Kaeschdin (29.08.08 um 19:00 Uhr)
     

  9. #9
    crazy_root crazy_root ist offline Mitglied
    Registriert seit
    Sep 2007
    Beiträge
    22
    Zitat Zitat von crazy_root Beitrag anzeigen
    //edit:
    Es fehlte eine geschlossene Klammer!
    Mein Editor meckert ja sofort, aber in einer Textbox nicht

    Geändert von crazy_root (29.08.08 um 17:11 Uhr).
    Wenn die Zielseite eine HTML-Datei ist, kann jeder direkt darauf zugreifen!

    Der Grund liegt daran, dass du den Fehler ganz oben im Skript per echo ausgibst und nicht speicherst und in unten (so wie ich es geschrieben habe) ausgibst...
     

  10. #10
    Kaeschdin Kaeschdin ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Beiträge
    145
    Ich habe es jetzt nach dieser Anleitung gelöst:

    http://www.html.de/tutorials/11487-p...-sessions.html

    Danke an alle
    Geändert von Kaeschdin (03.09.08 um 21:54 Uhr)
     

Ähnliche Themen

  1. Problem mit Login-Skript
    Von userjules im Forum PHP
    Antworten: 25
    Letzter Beitrag: 19.01.10, 17:26
  2. Login-Bereich erweitern
    Von compoundbow83 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 07.05.07, 19:05
  3. Login-Bereich erweitern
    Von compoundbow83 im Forum Stellenangebote (unentgeltlich)
    Antworten: 2
    Letzter Beitrag: 05.05.07, 11:47
  4. Passwort skript erweitern mit Benutzer
    Von supser im Forum PHP
    Antworten: 45
    Letzter Beitrag: 07.04.07, 10:16
  5. [Suche] Login-Skript
    Von Miraculixx im Forum PHP
    Antworten: 3
    Letzter Beitrag: 11.08.06, 12:57