Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Problem bei der Passwortabfrage (PHP/MYSQL)

  1. #1
    HTML Newbie
    Registriert seit
    06.05.2009
    Beiträge
    6
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Problem bei der Passwortabfrage (PHP/MYSQL)

    Ich habe eine Anmeldung geschrieben und es klappt auch jede Abfrage nur die mit dem Passwort funktioniert irgendwie nicht. Ich bitte um Hilfe, da ich leider schon zu lange an dem Problem hänge. Danke!

    Ich habe es durch die Kommentare gut Strukturiert gehalten und man sieht mein rumprobieren bei dem Fehler. Danke schonmal für jede Hilfe!

    Script:

    PHP-Code:
    <?php
                    
                    
    //guckt, ob es einen Login Cookie gibt
                    
    if(isset($_COOKIE['ID_my_site']))
                    
                    
    //wenn es einen gibt, dann leitet es einen zu der Accespage weiter
                    
    {
                    
    $Username $_COOKIE['ID_my_site'];
                    
    $pass $_COOKIE['Key_my_site'];
                    
    $check mysql_query("SELECT * FROM users WHERE Username = '$Username'")or die(mysql_error());
                        while(
    $info mysql_fetch_array$check ))
                        {
                            if (
    $pass != $info['password'])
                            {
                            }
                            else
                            {
                            echo 
    '<meta http-equiv="renew" content="0; URL=Impressum.php">';
                            exit; 
                        
                            }
                        }
                    }
                    
                    
    //wenn der Login übermittelt wurde
                    
    if (isset($_POST['submit'])) 
                    { 
    // wenn der Login übermittelt wurde
                     
                        //kontrolliert ob die Felder ausgefüllt sind
                        
    if(!$_POST['Username'] | !$_POST['pass']) 
                        {
                            die(
    'Sie haben nicht alle Felder ausgefüllt.');
                        }
                        
    //gleicht es mit der Datenbank ab
                    
                        
    if (!get_magic_quotes_gpc()) 
                        {
                            
    $_POST['email'] = addslashes($_POST['email']);
                        }
                    
                        
    $check mysql_query("SELECT * FROM users WHERE Username = '".$_POST['Username']."'")or die(mysql_error());
                        
    // $sql = SELECT * FROM  users WHERE (Username like $_REQUEST["Username"]) AND (pass = md5($_REQUEST["pass"])
                         //    $result = mysql_query ($sql);  
                    
                        //gibt einen Fehler aus, wenn es den Benutzer nicht gibt
                        
    $check2 mysql_num_rows($check);
                        if (
    $check2 == 0
                        {
                            die(
    'Dieser Benutzer existiert nicht. Bitte versuchen Sie es erneut.');
                        }
                    
                        while(
    $info mysql_fetch_array$check ))
                        {
                        
    $_POST['pass'] = stripslashes($_POST['pass']);
                        
    $info['password'] = stripslashes($info['password']);
                        
    $_POST['pass'] = md5($_POST['pass']);
                        }
                        
                        
    //Gibt einen Fehler aus, wenn das Passwort falsch ist
                        //gives error if the password is wrong
                        
    if ($_POST['pass'] != $info['password']) 
                        {
                        die(
    'Incorrect password, please try again.');
                        }
                        
                        
    $check mysql_query("SELECT * FROM users WHERE Username = '$Username'")or die(mysql_error());
                        while(
    $info mysql_fetch_array$check ))
                        {
                            if (
    $_POST['pass'] != $info['pass'])
                            {
                                die (
    'Ihr Passwort ist inkorrekt. Bitte versuchen Sie es erneut.');
                            }
                        }
                        echo 
    '<meta http-equiv="refresh" content="0; URL=Impressum.php">';
                    }
                    else
                    {
                            
    //wenn der Login erfolgreich war, dann fügen wir einen Cookie hinzu
                            
    $_POST['Username'] = stripslashes($_POST['Username']);
                            
    $hour time() + 3600;
                            
    setcookie(ID_my_site$_POST['Username'], $hour);
                            
    setcookie(Key_my_site$_POST['pass'], $hour);
                            
                            
    header("Location: Impressum.php"); 
                            
    //dann leiten Sie ihn zur Accespage
                     
    }
                    
                
    ?>
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Geändert von Sucki (06.05.2009 um 15:13 Uhr)

  2. #2
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: Problem bei der Passwortabfrage (PHP/MYSQL)

    Das ist mir in der Form zu unleserlich. Rück den Quellcode mal ein und gibt ihn formattiert aus -> [ php ] [ /php ]
    Dann schau ich es mir vllt. bei Gelegenheit an.

    Hier mal ein kleines Login-Skript, vllt. hilft dir das auch als Anregung schon weiter:
    PHP-Code:
    <?php
    session_start
    ();
    include(
    "config/dbconnect.php");
    if(!isset(
    $_SESSION['admin'])) {
        if(isset(
    $_POST['ok'])) {
            
    $sql "SELECT id FROM user WHERE login=? AND passwort=? LIMIT 1";
            
    $res $db->prepare($sql);
            
    $res->bind_param("ss",$_POST['login'],$_POST['passwort']);
            
    $res->execute();
            
    $res->bind_result($id);
            if(
    $res->fetch()) {
                
    $_SESSION['admin'] = true;
                
    $_SESSION['time']  = time();
            }
            
    $host  $_SERVER['HTTP_HOST'];
            
    $uri   rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
            
    $extra "admin.php";
            
    header("Location: http://$host$uri/$extra");
            exit;
        } else { 
    ?>
            <form action='' method='post'>
            <b>Login:</b><br>
            <input type='text' name='login' style='width:200px;'><br>
            <b>Passwort:</b><br>
            <input type='password' name='passwort' style='width:200px;'><br>
            <input type='submit' name='ok' value='Einloggen'>
            </form> <?php
        
    }
    }
    else {
        if(
    time() - $_SESSION['time'] > 1800) {
            
    session_destroy();
            
    $host  $_SERVER['HTTP_HOST'];
            
    $uri   rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
            
    $extra "admin.php";
            
    header("Location: http://$host$uri/$extra");
            exit;
        }
        else {
            
    $_SESSION['time'] = time();
        }
        
    // Interner Bereich
    }
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  3. #3
    HTML Newbie
    Themenstarter

    Registriert seit
    06.05.2009
    Beiträge
    6
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Problem bei der Passwortabfrage (PHP/MYSQL)

    Hab die Einrückung natürlich normal.^^ Aber ich wusste das mit [ php ] [ /php ] nicht. :P
    Geändert von Sucki (06.05.2009 um 15:17 Uhr)

  4. #4
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: Problem bei der Passwortabfrage (PHP/MYSQL)

    Ok, das ist schonmal lesbarer.

    An welcher Stelle hakt es denn genau, also ab wo ganz genau macht es nicht mehr das was du gern hättest?
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  5. #5
    HTML Newbie
    Themenstarter

    Registriert seit
    06.05.2009
    Beiträge
    6
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Problem bei der Passwortabfrage (PHP/MYSQL)

    Also es ist so, wenn ich in das Feld "Passwort" eine Eingabe mache (vorrausgesetzt der "Name" ist richtig geschrieben), dann gibt er mir immer den Fehler aus, dass das Passwort falsch ist. Auch wenn ich es richtig eingebe. Und er soll da halt das Passwort aus der Datenbank (zum dazugehörigen User) nehmen und vergleichen. Und nur wenns falsch ist, die Fehlermeldung ausgeben.

    ^^ Danke für deine schnellen antworten. Ich versuch mir das schon alles selbst beizubringen, aber das klappt immer nicht so gut. xD (und nicht wundern, ich hab da noch ein paar Leichen im Quelltext gelassen, wo ich rumprobiert habe).

  6. #6
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: Problem bei der Passwortabfrage (PHP/MYSQL)

    Ich hab das mal auf die relevanten Teile gekürzt und die ein oder andere Anmerkung zu Änderungen reinkommentiert, so hier sollte es eigentlich laufen:
    PHP-Code:
    <?php
    if (isset($_POST['submit'])) {
        
    // Eingabefelder-Überprüfung mit empty()
        
    if(empty($_POST['Username']) || empty($_POST['pass']))  {
            die(
    'Sie haben nicht alle Felder ausgefüllt.');
        }
        
    // Wird $_POST['email'] überhaupt benötigt?
        
    if (!get_magic_quotes_gpc()) {
            
    $_POST['email'] = addslashes($_POST['email']);
        }
        
    // mysql_real_escape_string() verwenden zum Schutz vor SQL-Injection, siehe PHP-Doku
        
    $username mysql_real_escape_string($_POST['Username']);
        
    // Keine SELECT * sondern nur Felder selecten die auch gebraucht werden, s.u.
        // LIMIT 1, es gibt wohl jeden usernamen nur einmal
        
    $check mysql_query("SELECT password FROM users WHERE Username='".$username."' LIMIT 1")or die(mysql_error());
        
    $check2 mysql_num_rows($check);
        if(!
    $check2) {
            die(
    'Dieser Benutzer existiert nicht. Bitte versuchen Sie es erneut.');
        }
        
    // while-Schleife entfernt, da unnötig
        
    $info mysql_fetch_array$check )) {
        
    $pass md5($_POST['pass']);
        if (
    $pass != $info['password']) {
            die(
    'Incorrect password, please try again.');
        }
    }
    ?>
    Wurde dir die englische oder die deutsche Fehlermeldung zum PW ausgespuckt? Bei der deutschen ist völlig klar das die kommt, da du in der zweiten Abfrage auf user nach $username sucht, die Variable wird vorher aber gar nicht belegt, also kann auch kein Datensatz gefunden werden. (Wozu eigentlich die zweite Abfrage auf user?)

    Anmerkung:
    Warum soll ich nicht SELECT * schreiben?
    http://www.php-faq.de/q-sql-select.html
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  7. #7
    HTML Newbie
    Themenstarter

    Registriert seit
    06.05.2009
    Beiträge
    6
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Problem bei der Passwortabfrage (PHP/MYSQL)

    Also erstmal danke.^^

    Dann eine Verständnissfrage:

    mysql_real_escape_string bedeutet also, dass es der Variablen immer einen Wert zuweist und der dadurch nicht auf 0 stehen kann?

    zu Punkt 2.:
    Edit* schon gut. xD

    Regards Sucki

  8. #8
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: Problem bei der Passwortabfrage (PHP/MYSQL)

    Zitat Zitat von Sucki Beitrag anzeigen
    Also erstmal danke.^^

    Dann eine Verständnissfrage:

    mysql_real_escape_string bedeutet also, dass es der Variablen immer einen Wert zuweist und der dadurch nicht auf 0 stehen kann?

    zu Punkt 2.:
    Edit* schon gut. xD

    Regards Sucki
    mysql_real_escape_string maskiert bestimmte Zeichen in deinem String um SQL-Injection zu verhindern.
    Mal ein Beispiel für SQL-Injection:
    PHP-Code:
      <?php
    // Datenbankabfrage zur Ueberpruefung der Logindaten
    $query "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
    mysql_query($query);

    // Wir haben $_POST['password'] nicht geprueft, es koennte also alles darin
    // stehen, was der User will. Zum Beispiel:
    $_POST['username'] = 'aidan';
    $_POST['password'] = "' OR ''='";

    // Das bedeutet, der an MySQL gesendete Query wuerde sein:
    echo $query;
    ?>
    Die Abfrage, die an MySQL übermittelt wird:

    SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''


    http://de.php.net/mysql_real_escape_string
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  9. #9
    Meister(in)
    Registriert seit
    27.03.2009
    Ort
    Berlin
    Beiträge
    278
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Problem bei der Passwortabfrage (PHP/MYSQL)

    Deswegen kann man ja zb nen md5 vergleich des pwd machen

  10. #10
    HTML Newbie
    Themenstarter

    Registriert seit
    06.05.2009
    Beiträge
    6
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Problem bei der Passwortabfrage (PHP/MYSQL)

    Ich komm damit irgendwie total nicht klar.
    Also 1.:
    Wenn ich die while Schleife wegnehme, dann wird bei mir das Login nicht mehr angezeigt (d.h. die komplette Form):
    PHP-Code:
    while($info mysql_fetch_array$check ))
              {
                
    $_POST['pass'] = stripslashes($_POST['pass']);
                
    $info['password'] = stripslashes($info['password']);
                
    $_POST['pass'] = md5($_POST['pass']);
              } 
    2.
    So den einen Fehler behoben.... Jetzt hab ich die scheiße, dass er die Passwortabfrage wieder nicht macht -_- er gibt nix mehr aus, egal was ich für ein Passwort eingebe.

    Bzw. hab ich es momentan so:
    PHP-Code:
    //kontrolliert ob die Felder ausgefüllt sind
                        
    if(empty($_POST['Username']) || empty($_POST['pass']))
                        {
                    die(
    'Sie haben nicht alle Felder ausgefüllt.');
                    }
                        
    $check mysql_query("SELECT pass FROM users WHERE Username = '".$_POST['Username']."'")or die(mysql_error());
                        
    //gibt einen Fehler aus, wenn es den Benutzer nicht gibt
                        
    $check2 mysql_num_rows($check);
                        if (
    $check2 == 0
                        {
                            die(
    'Dieser Benutzer existiert nicht. Bitte versuchen Sie es erneut.');
                        }
                    
                        while(
    $info mysql_fetch_array$check ))
              {
                
    $_POST['pass'] = stripslashes($_POST['pass']);
                
    $info['password'] = stripslashes($info['password']);
                
    $_POST['pass'] = md5($_POST['pass']);
              }
                        

                        
                        
    //Gibt einen Fehler aus, wenn das Passwort falsch ist
                        
    if ($pass != $info['password'])
                        {
                    die(
    'Incorrect password, please try again.');
                    } 
    SinnlosS hast du vll MSN? ^^
    Geändert von Sucki (06.05.2009 um 16:43 Uhr)

Ähnliche Themen

  1. User / Passwortabfrage
    Von OliverN26 im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 30.06.2007, 02:43
  2. Passwortabfrage
    Von 4Deluxe im Forum HTML & CSS Forum
    Antworten: 16
    Letzter Beitrag: 22.05.2007, 16:25
  3. Passwortabfrage
    Von badmaxx im Forum HTML & CSS Forum
    Antworten: 12
    Letzter Beitrag: 10.02.2007, 09:21
  4. Passwortabfrage
    Von sappel im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 16.12.2005, 14:53
  5. Passwortabfrage mit Abbruchbedingung
    Von dan im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 17.01.2005, 14:54

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •