Problem bei IF-Abfrage

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

  • Problem bei IF-Abfrage

    Eigentlich will ich ein einfahches Php, Flatfilebasierendes Loginsystem schreiben. Aber irgendwie haut das noch nicht so ganz hin. Sry is wohl eher ne Noob Frage, aber konnte da zu irgendwie nichts finden ;p

    Code:
    if($pw1 <> $pw2){
    
      echo "
       <b>Login Error!</b>
       <br><br>
       :: The entered Username or Password has not been correct.  $name $pw1 $pw2<br>
       :: Click on this <a href='./login01.php'><u>Link</u></u></a> to try it again."; 
    } 
    
    if($pw1 == $pw2){
    
      echo "
       <b>Login complete!</b>
       <br><br>
       :: Click on this <a href='./login03.php'><u>Link</u></u></a> to edit your profile."; 
    }
    Erklärung:
    $pw1 und $pw2 sollen verglichen werden. Wenn sie gleich sind kommt man (später noch mit Einbezug der Postdaten) weiter - wenn nicht, dann taucht eine Fehlermeldung auf der Site auf.


    $pw1 :: Ist das Passwort das vom Benutzer gerade eben zur Login eingegeben wurde. Wird per Post aus einem Formular (Benutzereingabe) an die aktuelle php Seite geschickt. $pw1 besteht aus einem 4-stelligen Zahlenwert. Ist also, das Passwort das auf Richtigkeit geprüft werden soll

    $pw2 :: Wird aus einer Textdatei abgelesen, die bei der Registrierung des Benutzer erstellt worden ist. Ist ein bei der Registrierung zufallsgenerierter 4-stelliger Zahlenwert. Ist also, das richtige Passwort des Benutzerkontos

    Was bisher passt:
    $pw1 und $pw2 werden definitiv eingelesen. Als Test hab ich die beiden Variablen mal per echo wiedergegeben. Beide hatten in meinen Fall den Wert "8224" und "8224" - der Wert war also gleich.
    Denach müsste if($pw1 == $pw2) zutreffen, trotzdem wird das Ergebniss von if($pw1 <>$pw2) ausgegeben.

    Was mich irritiert ist, dass trotz allem der Script nicht funktioniert:
    meine vermutung: wenn ich if($pw1 == $pw2) ansehe werden anscheindend die Namen der Variablen verglichen und nicht deren aktueller Wert. Als Beispiel hab ich statt $pw1 einfach mal $pw2 angegeben, oder beide durch irgendeine gleiche Zahl etc ersetzt- damit funktionierte dann.

    Aber wie bekomm ich es hin, dass der Wert der Variable (d.h. 8224 u. 8224) verglichen wird und nicht der Name (d.h $pw1 u. $pw2) verglichen wird?

    Grüße Twentytwo
    Zuletzt geändert von Twentytwo; 01.05.2007, 16:26.

  • #2
    Re: Problem bei IF-Abfrage

    Original geschrieben von Twentytwo
    meine vermutung: wenn ich if($pw1 == $pw2) ansehe werden anscheindend die Namen der Variablen verglichen und nicht deren aktueller Wert.
    So'n Quark ...
    Aber wie bekomm ich es hin, dass der Wert der Variable (d.h. 8224 u. 8224) verglichen wird und nicht der Name (d.h $pw1 u. $pw2) verglichen wird?
    In dem du einen stinknormalen Vergleich machst ...

    Was genau du falsch machst, kann man auf Basis des Schnippsels nicht sagen.

    Über register_globals=off informiert, und beim Übernehmen der Formulardaten berücksichtigt?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      sinnvollere konstruktion:
      Code:
      if(a==b){
         login ok
      } else {
         login falsch
      }
      und ich würd gern n var_dump sehen.

      Kommentar


      • #4
        Thx für die Comments. Ich hab hier mal den ganzen Code eingefügt:

        PHP-Code:
        <?

        $name = $_POST['name'];
        $genpw = $_POST['genpw'];

        if( empty($name)) {
          echo "
           <b>Login Error!</b>
           <br><br>:: All fields are required.<br>
           :: Click on this <a href='./login01.php'><u>Link</u></u></a> to try it again.";


        else {
        $flatfile=file("$name.txt");
        foreach ($flatfile as $line)
        {
          $showelement=explode("|||",$line);
         
        $pw1 = $genpw;
        $pw2 = $showelement[20];
        }


        if($pw1 <> $pw2){

          echo "
           <b>Login Error!</b>
           <br><br>
           :: The entered Username or Password has not been correct.  $name $pw1 $pw2<br>
           :: Click on this <a href='./login01.php'><u>Link</u></u></a> to try it again."; 

        else{

          echo "
           <b>Login complete!</b>
           <br><br>
           :: Click on this <a href='./login01.php'><u>Link</u></u></a> to edit your profile."; 
        }
        }
        ?>
        Ich weiß, is noch unsicher und der Code ist auch noch nicht so toll. Hab erst mit php angefangen. Das Passwort wird pro Account in einer Textdatei gespeichert, die jeweils als $Name.txt erstellt wurde. Auf diese Weise kann ich mit dem richtigen Benutzernamen im Formular automatisch die Textdatei ermitteln, zu der dieser Benutzername zugeordnet ist. Damit ließt das Script auch gleichzeitig das entsprechende Passwort aus und kann es mit den anderen Passwort vergleichen.

        $showelement[20] ist das aus der Textdatei ausgelesene Pw.
        $genpw ist das vom Benutzer angegebene Pw.
        $pw1 und $pw2 sind einfach nur zur Vereinfachung gedacht
        Zuletzt geändert von Twentytwo; 01.05.2007, 16:41.

        Kommentar


        • #5
          Original geschrieben von Twentytwo
          PHP-Code:

          if($pw1 <> '$pw2'){
          //.....

          Was passiert deiner meinung nach hier?
          Der rest des codes ist auch widersprüchlich aber beschränken
          wir uns zunächst mal auf diesen teil.

          greets
          (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

          Kommentar


          • #6
            Die ' ' hab ich schon raus gelöscht. Es tritt immer noch der gleiche Fehler auf.
            Ich hab langsam echt keinen Plan mehr. Wenn ich anstatt
            $pw1 == $pw2
            z.b
            $pw1 == $pw1
            oder
            pw1==pw1
            oder
            121=121
            etc. einsetzen würde, wär das Problem gelöst.

            Ich hab auch versucht $pw1 und $pw2 so auszugeben. Beide haben den gleichen Wert: 8224, aber trotzdem sind sie angeblich unterschiedlich
            Zuletzt geändert von Twentytwo; 01.05.2007, 16:50.

            Kommentar


            • #7
              Original geschrieben von Twentytwo
              Ich hab auch versucht $pw1 und $pw2 so auszugeben.
              var_dump von beiden Werten machen, Ausgabe aus der Quelltextanzeige des Browsers kopieren, hier posten.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Ahhhh, danke

                Jetzt hab ichs. Bei der variable die aus der Textdatei gelesen wurde, war am Ende noch ein Leerzeichen mit dran. Also:

                var_dump(1111);
                var_dump(1111 );

                Kommentar


                • #9
                  Könnte es sein dass das eine ein String und das andere ein Integer ist?

                  Kommentar


                  • #10
                    Beide Werte waren Integer. Hatte das Problem schon einmal^^

                    Aber thx nochmal für die Hilfe und vorallem für den Tipp mit var_dump.

                    Kommentar

                    Lädt...
                    X