Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit meinem Login System

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

  • DJ Nuno
    hat ein Thema erstellt Problem mit meinem Login System.

    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!

  • DJ Nuno
    antwortet
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Was ist denn das für ein abendteuerliches Login-Skript? Willst du jedesmal _alle_ Daten durchlaufen?

    Und ganz wichtig: PHP: Arrays - Manual

    Einen Kommentar schreiben:


  • DJ Nuno
    antwortet
    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!

    Einen Kommentar schreiben:


  • Papst
    antwortet
    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');
    ?>

    Einen Kommentar schreiben:


  • DJ Nuno
    antwortet
    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"...

    Einen Kommentar schreiben:


  • PsychoEagle
    antwortet
    Richtig

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

    Leeren:
    $_SESSION['var'] = '';

    Einen Kommentar schreiben:


  • DJ Nuno
    antwortet
    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!

    Einen Kommentar schreiben:


  • PsychoEagle
    antwortet
    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

    Einen Kommentar schreiben:


  • XraYSoLo
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X