Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit meinem Login System

Einklappen

Neue Werbung 2019

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

  • Problem mit meinem Login System

    Hallo,

    ich Bastel gerade ein Login System das nicht so richtig will.
    Also Problem ist das 3 User in der Datenbank sind, allerdings nur einer als gültigen User erkannt wird. habe schon in der Datenbank nachgeschaut da ist alles in ordnung.

    Hier der code worum es geht:

    PHP-Code:
    if (isset($_POST['Login'])) {
                
    $pass md5($_POST['Pass']);
                
                
    $db mysql_connect('localhost''***''***') or die("MySQL Connect Error!");
                
    mysql_select_db('usr_web680_2'$db) or die("Database Select Error!");
                
    $sql "SELECT * FROM reg_user";
                
    $result mysql_query($sql) or die(mysql_error());
                
    $num mysql_numrows($result);
                
                for (
    $i 0$i $num$i++) {
                    
    $row mysql_fetch_array($result);
                    
                    if (
    $row[user] == $_POST['User']) {
                        if(
    $row[pass] == $pass) {
                            if (
    $row[blocked] == "1") {
                                
    $blocked true;
                            } else {
                                
    $_SESSION['nick'] = $row[nick];
                                
    $_SESSION['id'] = $row[id];
                                
    $_SESSION['rank'] = $row[rank];
                                
    $_SESSION['email'] = $row[email];
                                
    $_SESSION['eingelogt'] = true;
                            }
                        } else {
                            
    $_SESSION['eingelogt'] = false;
                            
    $error $err12;
                        }
                    } else {
                        
    $_SESSION['eingelogt'] = false;
                        
    $error $err12;
                    }
                }
            } 
    zuerst dachte ich es sei wege den Leerzeichen in den Usernamen, allerdings kann ich mich auch mit einem weiteren Test Account nicht einloggen das keine leerzeichen im Login Namen hat.

    Bin hier langsam am verzweifeln, bin für jede idee oder vorschlag dankbar!

    Vielen dank im vorraus!
    MFG
    DJ Nuno

  • #2
    um dich vor leerzeichen zu schützen, solltest du dir mal die funktion trim() ansehen.
    weiterhin check' mal die arrays, denn die kommen mir ohne hochkommata nicht korrekt vor.
    zusätzlich bedarf mysql_select_db() keiner verbindungskennung.


    PHP-Code:
    <?php
    if (isset($_POST['Login'])) {
                
    $pass md5($_POST['Pass']);
                
                
    $db mysql_connect('localhost''***''***') or die("MySQL Connect Error!");
                
    mysql_select_db('usr_web680_2') or die("Database Select Error!");
                
    $sql "SELECT * FROM reg_user";
                
    $result mysql_query($sql) or die(mysql_error());
                
    $num mysql_numrows($result);
                
                for (
    $i 0$i $num$i++) {
                    
    $row mysql_fetch_array($result);
                    
                    if (
    $row[user] == $_POST['User']) {
                        if(
    $row[pass] == $pass) {
                            if (
    $row[blocked] == "1") {
                                
    $blocked true;
                            } else {
                                
    $_SESSION['nick'] = $row['nick'];
                                
    $_SESSION['id'] = $row['id'];
                                
    $_SESSION['rank'] = $row['rank'];
                                
    $_SESSION['email'] = $row['email'];
                                
    $_SESSION['eingelogt'] = true;
                            }
                        } else {
                            
    $_SESSION['eingelogt'] = false;
                            
    $error $err12;
                        }
                    } else {
                        
    $_SESSION['eingelogt'] = false;
                        
    $error $err12;
                    }
                }
            } 
    ?>
    Nils aka XraYSoLo

    Kommentar


    • #3
      Mach mehr debugging, wo geht er wohin in welchen If Zweig (ergo Echo ausgaben) damit du weist, wo er rausspring, bzw wo er eben nicht "richtig" hinkommt.

      Das mit den fehlenden hochkommatas ist auch ein Punkt

      Grüße
      Da Psy
      [I]"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)[/I]

      Kommentar


      • #4
        Ok, das Problem muss definitiv bei den Sessions liegen denn ich habe jetzt mal schön alles ausgeben lassen. und es kommt komischerweise das bei einem User der nicht funktioniert bzw. wo er mir sagt das die daten falsch sind:

        User: DJ Nuno
        Pass: e10adc3949ba59abbe56e057f20f883e
        Post User: DJ Nuno
        Post Pass: e10adc3949ba59abbe56e057f20f883e
        User Erkannt!
        Passwort Erkannt!
        Nicht Geblockt!
        und das bei dem User der funktioniert:

        User: log
        Pass: e10adc3949ba59abbe56e057f20f883e
        Post User: log
        Post Pass: e10adc3949ba59abbe56e057f20f883e
        User Erkannt!
        Passwort Erkannt!
        Nicht Geblockt!
        also neue frage: Wie kann ich sessions richtig leeren bzw. die Deklaration löschen? war das mit unset???

        Danke im Vorraus!
        MFG
        DJ Nuno

        Kommentar


        • #5
          Richtig

          Löschen:
          unset($var) bzw unset($_SESSION['var'])

          Leeren:
          $_SESSION['var'] = '';
          [I]"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)[/I]

          Kommentar


          • #6
            Leider hat es nichts gebracht die Sessions vorher zu löschen, bzw. zu leeren.

            Hier mal der ganze Quellcode wenn jemand weitere tipps oder vorschläge hat bin ich sehr dankbar.


            PHP-Code:
            <?
                include("errors.php");
                $error = "";
                $blocked = false;
                unset($_SESSION['nick']);
                unset($_SESSION['id']);
                unset($_SESSION['rank']);
                unset($_SESSION['email']);
                unset($_SESSION['eingelogt']);
                
                    if (isset($_POST['Login'])) {
                        $pass = trim(md5($_POST['Pass']));
                        
                        $db = mysql_connect('localhost', '***', '***') or die("MySQL Connect Error!");
                        mysql_select_db('usr_web680_2', $db) or die("Database Select Error!");
                        $sql = "SELECT * FROM reg_user";
                        $result = mysql_query($sql) or die(mysql_error());
                        $num = mysql_numrows($result);
                        
                        for ($i = 0; $i < $num; $i++) {
                            $row = mysql_fetch_array($result);
                            echo "User: ".$row['user'].'<br/>';;
                            echo "Pass: ".$row['pass'].'<br/>';;
                            echo "Post User: ".$_POST['User'].'<br/>';;
                            echo "Post Pass: ".$pass.'<br/>';;
                            if ($row['user'] == $_POST['User']) {
                                echo 'User Erkannt!<br />';
                                if(trim($row['pass']) == $pass) {
                                    echo 'Passwort Erkannt!<br />';
                                    if ($row['blocked'] == "1") {
                                        $blocked = true;
                                        echo 'Geblockt!<br />';
                                    } else {
                                        echo 'Nicht Geblockt!<br />';
                                        $_SESSION['nick'] = $row['nick'];
                                        $_SESSION['id'] = $row['id'];
                                        $_SESSION['rank'] = $row['rank'];
                                        $_SESSION['email'] = $row['email'];
                                        $_SESSION['eingelogt'] = true;
                                    }
                                } else {    
                                    $_SESSION['eingelogt'] = false;
                                    $error = $err12;
                                    echo 'Passwort Falsch!<br />';
                                }
                            } else {
                                $_SESSION['eingelogt'] = false;
                                $error = $err12;
                                echo 'User Falsch!<br />';
                            }
                            echo '<p></p>';
                        }
                    }

                if($_SESSION['eingelogt'] == true) {
                    echo '<meta http-equiv="Refresh" content="2;URL='.$_SERVER['PHP_SELF'].'?link=news" />
                          <div align="center"><strong>Willkommen '.$_SESSION['nick'].'!</strong></div>';
                } elseif($blocked == true) {
                    echo '<div class="rotfett" align="center"><strong>Du Wurdest Geblockt!</strong></div>';
                } else {
                    echo '<form id="Login" name="Login" method="post" action="'.$_SERVER['PHP_SELF'].'?link=login&user='.$_POST['User'].'">
                      <table width="100%" border="0" cellspacing="2">
                        <tr>
                          <td width="40%" colspan="2"><div class="rotfett" align="center">'.$error.'</div></td>
                        </tr>
                        <tr>
                          <td width="40%">&nbsp;</td>
                          <td width="60%">&nbsp;</td>
                        </tr>
                        <tr>
                          <td><div align="right"><strong>Username:</strong></div></td>
                          <td><label>
                            <input class="input" name="User" type="text" id="User" size="30" value="'.$_GET['user'].'">
                          </label></td>
                        </tr>
                        <tr>
                          <td><div align="right"><strong>Passwort:</strong></div></td>
                          <td><label>
                            <input class="input" name="Pass" type="password" id="Pass" size="30">
                          </label></td>
                        </tr>
                        <tr>
                          <td>&nbsp;</td>
                          <td><input class="button" type="submit" name="Login" id="Login" value="Login"></td>
                        </tr>
                        <tr>
                          <td>&nbsp;</td>
                          <td>&nbsp;</td>
                        </tr>
                        <tr>
                          <td height="21" colspan="2"><div align="center"><a href="'.$_SERVER['PHP_SELF'].'?link=forgotpw">Passwort vergessen</a><br />
                            <a href="'.$_SERVER['PHP_SELF'].'?link=register">Registrieren</a></div>
                          <label></label></td>
                        </tr>
                      </table>
                    </form>';
                }
            ?>
            in der Datenbank steht folgendes:

            id | blocked | indi | datum | user | pass | nick
            1 | 0 | 123456 |15.10.2007 06:29:36 | DJ Nuno | e10adc3949ba59abbe56e057f20f883e | DJ Nuno
            17 | 0 |123456 |15.10.2007 07:05:51 |bla |85c6ed79dc9359fadab3d3b521813b5a |Hans
            16 | 0 | 123456 | 15.10.2007 06:33:48 | log | e10adc3949ba59abbe56e057f20f883e | hallo

            Der einzige User der funktioniert ist "log"...
            MFG
            DJ Nuno

            Kommentar


            • #7
              Frag doch den Query anders ab, da sparst du dir die Schleife.
              PHP-Code:
              <?php
              $pass 
              md5($_POST['Pass']);
              $user addslashes($_POST['User']);
              $result mysql_query("SELECT * FROM `reg_user` WHERE `user` = '{$user}' AND `pass` = '{$pass}'");
              $userdata mysql_fetch_assoc($result);
              if (!
              $userdata)
               die(
              'Falsche Daten');
              ?>

              Kommentar


              • #8
                Hab das Problem gefunden!
                Darauf hätte ich eigenntlich schon früher kommen müssen, für die, die wissen wollen was das problem war:

                PHP-Code:
                 <?php
                if (isset($_POST['Login'])) {
                            
                $pass md5($_POST['Pass']);
                            
                            
                $db mysql_connect('localhost''***''***') or die("MySQL Connect Error!");
                            
                mysql_select_db('usr_web680_2') or die("Database Select Error!");
                            
                $sql "SELECT * FROM reg_user";
                            
                $result mysql_query($sql) or die(mysql_error());
                            
                $num mysql_numrows($result);
                            
                            for (
                $i 0$i $num$i++) {
                                
                $row mysql_fetch_array($result);
                                
                                if (
                $row[user] == $_POST['User']) { // Der erste User in der Dattenbank wird aufgerufen und verglichen
                                    
                if($row[pass] == $pass) {       // Alle Daten Stimmen
                                        
                if ($row[blocked] == "1") {
                                            
                $blocked true;        // User Nicht geblockt
                                        
                } else {
                                            
                $_SESSION['nick'] = $row['nick'];
                                            
                $_SESSION['id'] = $row['id'];
                                            
                $_SESSION['rank'] = $row['rank'];
                                            
                $_SESSION['email'] = $row['email'];
                                            
                $_SESSION['eingelogt'] = true;     // Eingelogt!
                                        
                }
                                    } else {
                                        
                $_SESSION['eingelogt'] = false;
                                        
                $error $err12;
                                    }
                                } else { 
                // Beim zweiten durchgang Stimmt der User nicht mehr!
                                    
                $error $err12;
                                    
                $_SESSION['eingelogt'] = false;  // Nicht mehr eingeloggt, also zugangsdaten Falsch, GANZ BÖSER FEHLER!  
                                
                }
                            }
                        } 
                ?>
                Erklärung warum sich nur einer einlogen konnte:
                Der User stand in der Datenbank ganz am ende, also auch kein weiterer nick zu vergleichen. So konnte der fehler auch nicht auftretten.

                Eine zeile die mich den ganzen tag beschäftigt hat

                Vielen dank an alle die sich die mühe gemacht haben mit mir nach dem Problem zu suchen!
                MFG
                DJ Nuno

                Kommentar


                • #9
                  Was ist denn das für ein abendteuerliches Login-Skript? Willst du jedesmal _alle_ Daten durchlaufen?

                  Und ganz wichtig: PHP: Arrays - Manual

                  Kommentar


                  • #10
                    Zitat von creek Beitrag anzeigen
                    Was ist denn das für ein abendteuerliches Login-Skript? Willst du jedesmal _alle_ Daten durchlaufen?
                    ist mir erstmal noch egal, ich bin PHP Anfänger (^_^).
                    Ich weiss ich könnte auch den SQL Befehl ändern z.B. in:

                    PHP-Code:
                    $user htmlspecialchars($_POST['User']);
                    $sql "SELECT * FROM reg_user WHERE user=".$user
                    Aber erstmal ist mir wichtig das es überhaupt funktioniert, aber vielen dank für den hinweiss.
                    MFG
                    DJ Nuno

                    Kommentar

                    Lädt...
                    X