Probleme bei Passwortabfrage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme bei Passwortabfrage

    Hi,

    ich habe Probleme, wie sehr oft, bei einer einfachen PW-Abfrage. Ich habe ein PW und einen Username in einer Datei gespeichert.
    Diese sieht so aus:

    // Admin-User-Name:
    Admin
    // Admin-Passwort:
    Testes
    so, nun mein Quelltext der Datei mit dem Formular:

    PHP-Code:
    <?php
    include("session_config.php");
    $bereich="Admin";
    include(
    "../config.inc.php");

    echo 
    "<center><br><br>Adminmenü:<br><br>";

    if (
    $_SESSION["pw"]==$adminpw AND $_SESSION["user"]==$adminuser) {
        
    HEADER ("Location: admin.php");
    }
    else {    
        echo 
    '<form action="check.php" method="post">';
        echo 
    '<input type="text" name="user" value="Admin"><br><br>';
        echo 
    '<input type="password" name="pw" value="Passwort"><br><br>';
        echo 
    '<input type="submit" value="LogIn"><br><br>';
    }
        
    ?>
    Die Datei, die das checkt:

    PHP-Code:
    <?php
    include("session_config.php");
    $bereich="Admin";
    include(
    "../config.inc.php");

    $pw=$_POST["pw"];
    $user=$_POST["user"];


    if (
    $_SESSION["pw"]==$adminpw AND $_SESSION["user"]==$adminuser) {
                
    HEADER ("Location: admin.php");
    }
    else {    
        if (!
    $user) {$f="Keinen Benutzer angegeben";}
        if (!
    $pw) {$f.="<br>Kein Passwort angegeben ";}
        if (
    $f) {echo "<br><br><br><center>".$f."</center>";}
        else {
            if (
    $user != $adminuser OR $pw != $adminpw) {
                echo 
    "Falsches Passwort oder falschen Username angegeben !!";
            }
            if (
    $_POST["user"]==$adminuser && $_POST["pw"]==$adminpw) {
                
    $_SESSION["pw"]=$pw;
                
    $_SESSION["user"]=$user;
                echo 
    "Erfolgreich eingeloggt. <a href='admin.php'>Hier </a> gehts weiter";
            }    
        }
    }    
    ?>
    und in der Cofig Datei steht drin:

    PHP-Code:
    ......
    $file=file("../optionen.txt");
    // Admin-Kennwort
    $adminpw=$file[3];
    // Admin-Username
    $adminuser=$file[1];
    ....... 
    Ich verstehe nicht, warum das nicht funtioniert.
    Wenn ich ausgeben:

    PHP-Code:
    echo $_POST["pw"]."<br>";
    echo 
    $_POST["user"]."<br>";
    echo 
    $file[1]."=".$adminuser;
    echo 
    "<br>";
    echo 
    $file[3]."=".$adminpw
    Dann bekomme ich als ausgabe:

    Testes
    Admin
    Admin =Admin
    Testes =Testes
    Also müsste doch alles stimmen ??
    Bitte euch um Hilfe.
    Danke

  • #2
    schaue mal genau hin ...

    PHP-Code:
    echo $file[1]."=".$adminuser;
    // man beachte, dass hier keine leerzeichen (umbrüche) sind. 
    Code:
    Admin =Admin
    // hier aber sehrwohl
    mache noch ein trim() rum

    PHP-Code:
    echo trim($file[1])."=".$adminuser
    beim vergleich natürlich auch.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Oh ja, vielen Dank. Jetzt weiß ich, worauf ich immer achten muss, wenn ich meine Passwortabfragen schreibe.

      Kommentar


      • #4
        besser wäre es natürtlich, wenn du die daten als variable in der externen datei ablegst...

        PHP-Code:
        $conf = array();
        $conf['user'] = array();
        $conf['user'][] = array('un' => 'user1''pw' => 'pass1');
        $conf['user'][] = array('un' => 'user2''pw' => 'pass2');
        $conf['user'][] = array('un' => 'user3''pw' => 'pass3');
        $conf['user'][] = array('un' => 'user4''pw' => 'pass4'); 
        dann hast du auch das problem mit den umbrüchen nicht.

        aber es dennoch gibt es noch viel bessere möglichkeiten ... aber das lernst du später noch.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          PHP-Code:
          $conf = array();
          $conf['user'] = array();
          $conf['user']['user1'] = 'pass1';
          $conf['user']['user2'] = 'pass2';
          $conf['user']['user3'] = 'pass3';
          $conf['user']['user4'] = 'pass4'
          hier noch ne andere alternative zum obigen array.

          PHP-Code:
          if (!isset($conf['user'][$_POST['user']])
             echo 
          'user nicht vorhanden, oder eine andere ausgabe';
          else
             if (
          $conf['user'][$_POST['user']] != $_POST['passwd'])
                echo 
          'password falsch';
             else
                echo 
          'alles ok'
          (code wie immer ohne garantie und tests)
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Ja, des wäre vielleicht schon ganz gut, aber ich möchte
            1. sowieso nur einen User
            2. will ich, dass dieser sein Passwort, un Username per Formular editieren kann, und dann ist das natürlich viel einfacher, wenn dann nur diese eine Zeile in der Datei neu geschrieben werden muss.

            Kommentar


            • #7
              war ja nur ein vorschlag .....

              das beste ist IMHO eh eine DB. ;-) aber bei nur einem user etwas übertrieben.
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Original geschrieben von Abraxax
                PHP-Code:
                $conf = array();
                $conf['user'] = array();
                $conf['user'][] = array('un' => 'user1''pw' => 'pass1');
                $conf['user'][] = array('un' => 'user2''pw' => 'pass2');
                $conf['user'][] = array('un' => 'user3''pw' => 'pass3');
                $conf['user'][] = array('un' => 'user4''pw' => 'pass4'); 
                Und das dann per eval ausführen oder wie?
                Naja, da find ich die Möglichkeit mit der DB aber besser, zumindest wenn man eine hat

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  wieso eval(). wieso will eigentlich jeder das ganze immer via eval() ausführen?

                  eval() == evil()

                  ^^ sei an der stelle noch einmal gesagt!

                  ein einfacher include reicht hier völlig aus.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Original geschrieben von Abraxax
                    ein einfacher include reicht hier völlig aus.
                    Wäre zu diesem Zweck wohl auch noch praktisch die Datei als *.php zu speichern, dann kann man nämlich nicht die gesamten Daten einsehen, wenn jemand die Datei finden ^^"

                    btw. wenn dann schon ein require....

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      das speichern als .inc.php erwarte ich als selbstverständlich. und ein include tut es auch. wenn die datei nicht da ist, hat er eh ein problem.

                      und ende der diskussion.
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Original geschrieben von Abraxax
                        das speichern als .inc.php erwarte ich als selbstverständlich. und ein include tut es auch. wenn die datei nicht da ist, hat er eh ein problem.

                        und ende der diskussion.
                        ein fehlendes Komma gibt im jedoch bei einem include keine Fehlermeldung, soweit ich mich erinnere, und wozu soll man nicht einfach sofort require verwenden, anstatt hinterher 20 Minuten suche auszuwenden um den Fehler zu finden, der einem leider nicht angezeigt wurde, weil man zu faul war da require hinzusetzen......

                        naja, mir egal, ich mach es eh nicht so, und es ist auch keine Seite mit der ich zutun hab also *über schulter wirft*

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar

                        Lädt...
                        X