Ankündigung

Einklappen
Keine Ankündigung bisher.

wo steckt der fehler bei der passwort abfrage?

Einklappen

Neue Werbung 2019

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

  • wo steckt der fehler bei der passwort abfrage?

    Moin, ich find meinen Fehler nicht.
    Wer sieht ihn?

    obwohl in der DB das Passwort drin steht sagt er mir das mein Passwort falsch ist.

    Code:
    <body>
    <?php if(!isset($_POST['submit'])) { ?>
    <form action="<?php $PHP_SELF ?>" method="post">
    <table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
      <tr>
        <td bgcolor="#e7e7e7" align="center" colspan="2">
        Bitte erst anmelden
        </td>
      </tr>
      <tr>
        <td width="170" bgcolor="#e7e7e7">Benutzername</td>
        <td width="230" bgcolor="#ffffff"><input type="text" name="username" size="20" class="input"<?php if($_POST['username'] != "" ) {echo ' value="'.$_POST['username'].'"';} ?>></td>
      </tr>
      <tr>
        <td width="170" bgcolor="#e7e7e7">Passwort</td>
        <td width="230" bgcolor="#ffffff"><input type="password" name="password" size="20" class="input"></td>
      </tr>
      <tr>
        <td bgcolor="#e7e7e7" align="center" colspan="2">
        <input type="submit" name="submit" value="Anmelden" class="button">
        </td>
      </tr>
    </table>
    </form>
    <?php
    }elseif(!$_POST['username'] || $_POST['username'] == "") {
      echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)
    
    Zurück</p>';
    }elseif(!$_POST['password'] || $_POST['password'] == "") {
      echo '<form action="index.php" method="post">';
      echo '<p align="center">Ein Passwort brauchen wir schon ;-)
    
    ';
      echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
      echo '<input type="submit" name="zurueck" value="Zurück">';
      echo '</p>';
      echo '</form>';
    }else{
      $password = md5($password);
      $query = @mysql_query("SELECT user, pass FROM users WHERE user = '".$_POST['username']."'") or die('Select ist fehlgeschlagen!');
      $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!
    Zurück</p>');
      if($password != $result['pass']){
        echo '<form action="index.php" method="post">';
        echo '<p align="center">Sorry, aber dieses Passwort ist falsch!
    
    ';
        echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
        echo '<input type="submit" name="zurueck" value="Zurück"></p>';
        echo '</form>';
        die;
      }else{
        $user = $result['user'];
        session_register('user');
        echo '<p align="center">LogIn erfolgreich! :-)
    
    Weiter</p>';
      }
    }
    ?>
    </body>
    danke, Teddy


  • #2
    @all nicht den Fehler sagen, lasst ihn mal selbst drauf kommen!!

    Code:
    $query = @mysql_query("SELECT user, pass FROM users WHERE user = '".$_POST['username']."'") or die('Select ist fehlgeschlagen!');
      $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!
    Zurück</p>');
    @teddy:
    1."@" unterdrückt jegliche Fehlermeldung.
    bemerkst du deine Logik?
    2. lass dir mal ne Fehlermeldung kommen mit die(mysql_error()) (Klappt mein fetch_array nicht

    Kommentar


    • #3
      mensch teddy!!!
      da kommst du drauf.
      du bekommst hier einen Kurs in Fehlerbeseitigung!
      mit so einer Fehlermeldung läßt sich viel machen.
      z.B. siehst du, ob es an der query liegt, oder nicht (z.B. oben drüber,...)

      Kommentar


      • #4
        Moin Jojo,

        ich hab auf nem Server vorher das gleiche script gehabt, da lief alles wunderbar, jetzt hab ich auf einen Linux-Server gewechselt (php, sql alles schon drauf und funktionstüchtig) und es funktioniert nicht mehr. Das kann doch nicht nur an dem @ liegen.

        hab versucht es anstelle von
        Code:
        $result = mysql_fetch_array($query);
        mit row zu machen, ebenfalls nicht weiter gekommen.

        Ist der Fehler denn so offensichtlich? Ich bin verwirrt, da das gleiche script auf einem anderen Server ja auch funktioniert hatte.

        Kommentar


        • #5
          kennst du die Bedeutung der register-globals?
          Das ist eine Einstellung in der PHP.ini
          Wenn die "on" sind, braucht man keine $_POST[] oder $_GET[] zu schreiben sondern einfach nur $<formularfeld>
          Ich denke, bei deinem jetzigen Server sind die "off".
          jetzt schau dir mal die Zeile über deiner Query an, ich denke, daran liegt es.

          Kommentar


          • #6
            beim Benutzernamen

            Code:
            $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!
            Zurück</p>');
            funktioniert es ja, er erkennt ob es den namen gibt oder nicht.
            aber dann beim passwort sagt er konsequent: gibt es nicht

            Code:
            if($password != $result['pass']){ 
                echo '<form action="index.php" method="post">'; 
                echo '<p align="center">Sorry, aber dieses Passwort ist falsch!
            
            '; 
                echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; 
                echo '<input type="submit" name="zurueck" value="Zurück"></p>'; 
                echo '</form>';

            Kommentar


            • #7
              Nein, die Bedeutung der register-globals kenne ich nicht. Uff, wenn die on sein müssen, dann muss ich mal schauen wie ich das einstellen kann...

              Kommentar


              • #8
                Zitat von Teddy
                beim Benutzernamen

                Code:
                $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!
                Zurück</p>');
                funktioniert es ja, er erkennt ob es den namen gibt oder nicht.
                Du hast eine komische Logik
                auch wenn das jetzt nix mit deinem Problem direkt zu tun hat:
                das @ vor Befehlen läßt Befehle auf jeden Fall ein true zurückliefern.
                So wird dein or-Befehl nie zum Einsatz kommen, da der nur bei false einspringt.

                Ich hab was gepostet, während du geschrieben hast.
                Schau dir das mal an

                Kommentar


                • #9
                  Zitat von Jojo
                  kennst du die Bedeutung der register-globals?
                  Das ist eine Einstellung in der PHP.ini
                  Wenn die "on" sind, braucht man keine $_POST[] oder $_GET[] zu schreiben sondern einfach nur $<formularfeld>
                  Ich denke, bei deinem jetzigen Server sind die "off".
                  jetzt schau dir mal die Zeile über deiner Query an, ich denke, daran liegt es.
                  wobei er sonst immer richtigerweise $_POST[] verwendet...

                  Kommentar


                  • #10
                    Zitat von Teddy
                    Nein, die Bedeutung der register-globals kenne ich nicht. Uff, wenn die on sein müssen, dann muss ich mal schauen wie ich das einstellen kann...
                    NEIN! *lol*
                    du musst nur die Zeile über deinem Query etwas ändern. Mehr nicht!
                    sonst stimmt nämlich alles.
                    regsiter-globals off heitß einfach nur, dass man bei Übergebenen Daten $_POST oder $_GET und so einsetzten muss!

                    Kommentar


                    • #11
                      Du meinst bei

                      Code:
                       $password = md5($password);
                      ... ich peil das irgendwie nicht

                      Kommentar


                      • #12
                        die ganze Zeit über sagst du $_POST['password'], oder $_POST['username']...
                        und in der Zeile jetzt sagt du einfach:
                        $passwort = md5($password);

                        jo, denkt sich da der Parser, der Knilch will den Hash-Wert von $password.
                        $password iss' abber leer. Na subba, denkt sich der Parser, hab ich weniger zu tun. Der Hashwert von 0 ist 0 (Stimmt doch oder?)

                        Dass du eigentlich das eingegebene Passwort verschlüsseln willst, weiß der Parser ja gar nicht.

                        also, wenn schon, dann:
                        Code:
                        $password = md5($_POST['password']);

                        Kommentar


                        • #13
                          mhh, ok, ist schon ein blöder Fehler. Jetzt funktioniert es auch. Bekomme zwar eine Fehlermeldung noch ausgespukt aber die bekomme ich noch klein.

                          Jetzt such ich noch genauso einen Fehler hier:
                          <?php
                          }elseif(!isset($_POST['username']) || $_POST['username'] == ""){
                          echo '<p align="center">Einen Benutzernamen brauchen wir schon

                          Zurück</p>';
                          }elseif(!isset($_POST['password']) || $_POST['password'] == "") {
                          echo '<p align="center">Ein Passwort brauchen wir schon

                          Zurück</p>';
                          }elseif($_POSAT['password'] != $_POST['password2']) {
                          echo '<form action="neu.php" method="post">';
                          echo '<p align="center">Die Passwörter stimmen nicht überein!

                          ';
                          echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
                          echo '<input type="submit" name="zurueck" value="Zurück"></p>';
                          echo '</form>';
                          }else{
                          $query = @mysql_query("SELECT user FROM users WHERE user = '".$_POST['username']."'");
                          $result = @mysql_fetch_array($query);
                          if($_POST['username'] == $result['user']) {
                          echo '<p align="center">Sorry, dieser Benutzername ist leider schon vergeben!

                          Zurück</p>';
                          die;
                          }else{
                          $username = $_POST['username'];
                          $pass = md5($_POST['password']);
                          if($insert = @mysql_query("INSERT INTO USERS SET user = '$username', pass = '$pass'")) {
                          echo '<p align="center">Der neue Benutzer wurde erfolgreich angelegt!

                          <a href="sichere_seite.php">Zur Admin-
                          Seite</a></p>';
                          }else{
                          echo '<p align="center">Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!

                          Zurück</p>';
                          }
                          }
                          }
                          ?>
                          Einige hab ich schon geändert, aber ich such da jetzt noch weiter. Also wer will kann ja schon mal schauen, aber bitte wie vorhin so schön geschrieben wurde: Noch nichts verraten.

                          Kommentar


                          • #14
                            HHEEEEUUUULLLLLLLL!!!!!
                            gewöhn dir mal für den Anfang diese @ vor deinen Befehlen ab!!!
                            Die hindern dich in der Entwicklungsphase wirklich von Fehlerbeseitigungen
                            und mach hinter alle deine mysql_query() ein "die(mysql_error())"
                            BIITTEEE!!!!

                            Kommentar


                            • #15
                              ich hab alle @ entfernt, wenn ich aber das mit dem die(mysql_error()) hat bei mir immer fehler verursacht.

                              Code:
                              <?php 
                              }elseif(!isset($_POST['username']) || $_POST['username'] == ""){ 
                                echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)
                              
                              Zurück</p>'; 
                              }elseif(!isset($_POST['password']) || $_POST['password'] == "") { 
                                echo '<p align="center">Ein Passwort brauchen wir schon ;-)
                              
                              Zurück</p>'; 
                              }elseif($_POST['password'] != $_POST['password2']) { 
                                echo '<form action="neu.php" method="post">'; 
                                echo '<p align="center">Die Passwörter stimmen nicht überein!
                              
                              '; 
                                echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; 
                                echo '<input type="submit" name="zurueck" value="Zurück"></p>'; 
                                echo '</form>'; 
                              }else{ 
                                $query = mysql_query("SELECT user FROM users WHERE user = '".$_POST['username']."'"); 
                                $result = mysql_fetch_array($query); 
                                if($_POST['username'] == $result['user']) { 
                                  echo '<p align="center">Sorry, dieser Benutzername ist leider schon vergeben!
                              
                              Zurück</p>'; 
                                  die; 
                                }else{ 
                                  $username = $_POST['username']; 
                                  $pass = md5($_POST['password']); 
                                  if($insert = $_POST[mysql_query("INSERT INTO USERS SET user = '$username', pass = '$pass'")]) { 
                                    echo '<p align="center">Der neue Benutzer wurde erfolgreich angelegt!
                              
                              Zur Admin-Seite</p>'; 
                                  }else{ 
                                    echo '<p align="center">Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!
                              
                              Zurück</p>'; 
                                  } 
                                } 
                              } 
                              ?>
                              ich hab noch ne $_post bei
                              Code:
                              if($insert = $_POST[mysql_query("INSERT INTO USERS SET user = '$username', pass = '$pass'")]) {
                              eingebaut *grübel*

                              nen kleinen tipp ( 2p neue rechtschreibreform *schüttel*)?

                              Kommentar

                              Lädt...
                              X