if abfrage geht nicht, trotz richtiger eingaben

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von oconner, 04.07.2006.

  1. oconner

    oconner Thread Starter MacUser Mitglied

    Beiträge:
    269
    Zustimmungen:
    0
    MacUser seit:
    11.01.2006
    Hallo,

    ich habe folgendes programmier

    PHP:
    <?php

    //die Datei wo fuer die login aktion ist

    $page_title "Login";

    //post übertragung
    $name $_POST['nick'];
    $pw $_POST['pass'];

    $pw_md md5($pw);

    $sql_login "SELECT `user_id`, `user_name`, `user_pass` FROM $user_table WHERE `user_name` = '$name'";
    $login_query mysql_query $sql_login );
    $login_row mysql_fetch_object $login_query ) OR die (mysql_error());

    if (
    $name == $login_row->user_name AND $pw_md == $login_row->user_pass)
        {
        
    setcookie ($cookie$login_row->user_idtime()+3600);
        echo 
    '    <div class="field" style="width:480px" align="left">
                <fieldset>
                <legend><strong>'
    .$info.'</strong></legend>
                <span class="norm">Dein Login war erfolgreich!</span><br><bt>
                Du kannst <a href="index.php"><b>hier</b></a> zum Index zurückkehren.
                </fieldset>
            </div>'
    ;
        }
        else
        {
        echo 
    '    <div class="field" style="width:480px" align="left">
                <fieldset>
                <legend><strong>'
    .$info.'</strong></legend>
                <span class="rot">Du hast eine falsches Passwort oder einen falschen Benutzernamen eingegeben!</span><br><bt>
                <a href="javascript:history.back()"><b>zurück</b></a> zum Login
                </fieldset>
            </div>'
    ;

        }

    ?>
    eigentlich sollte es gehen, aber leider tut es das nicht, obwohl ich richtige Daten in das Formular eingebe was an die Datei geschickt wird. Es wird einfach immer die else ausgegeben. Ich hab auch schon zum test die Vergleichs Anweisung ausgeben lassen, und die hat auch gestimmt.

    Aber wieso geht mein script nicht? :motz:

    Ich mir kann irgendjemand weiterhelfen.
     
  2. ApfelRalf

    ApfelRalf MacUser Mitglied

    Beiträge:
    642
    Zustimmungen:
    22
    MacUser seit:
    14.01.2004
    Moin,

    gib mal zur Kontrolle den Inhalt des Feldes "user_pass" aus der Datenbank aus und vergleiche das mit dem Inhalt von "$pw_md". Ich vermute den Fehler dort.

    LG Ralf
     
  3. Pingu

    Pingu MacUser Mitglied

    Beiträge:
    4.894
    Zustimmungen:
    341
    MacUser seit:
    04.08.2003
    Gib doch einfach mal folgendes vor der if-Abfrage ein.
    PHP:
    printf("Username: %s – DB: %s - Vergleich: %d"$name$login_row->user_name$name == $login_row->user_name);
    printf("Password: %s – DB: %s – Vergleich: %d"$pw_md$login_row->user_pass$pw_md == $login_row->user_pass);
    Dann kannst Du besser sehen wo und warum der Vergleich fehl schlägt.

    Pingu
     
    Zuletzt bearbeitet: 04.07.2006
  4. oconner

    oconner Thread Starter MacUser Mitglied

    Beiträge:
    269
    Zustimmungen:
    0
    MacUser seit:
    11.01.2006
    Genau das hab ich doch schon gemacht was ihr meint. Und laut dieser hab ich richtige Daten eingegeben und die Vergleichung stimmte.
     
  5. Ganymed01

    Ganymed01 Gast

    Vielleicht mal Klammern drumsetzen? Das wirkt teilweise Wunder :)
    Versuch ists Wert:

    if (($name == $login_row->user_name) AND ($pw_md == $login_row->user_pass))
     
  6. Normaniac

    Normaniac MacUser Mitglied

    Beiträge:
    119
    Zustimmungen:
    3
    MacUser seit:
    16.06.2006
    Probiers mal mit diesem Code (davon ausgehend, dass der DB-Connect irgendwo schon früher geschieht):

    PHP:
    <?php 

    //die Datei wo fuer die login aktion ist 

    $page_title "Login"

    //post übertragung 
    $name $_POST['nick']; 
    $pw $_POST['pass']; 

    $pw_md md5($pw); 


    $result mysql_query("SELECT `user_id`, `user_name`, `user_pass` FROM $user_table WHERE `user_name` = '$name'");
    while (
    $login_row mysql_fetch_object($result)) {


    if (
    $name == $login_row->user_name AND $pw_md == $login_row->user_pass
        { 
        
    setcookie ($cookie$login_row->user_idtime()+3600); 
        echo 
    '    <div class="field" style="width:480px" align="left"> 
                <fieldset> 
                <legend><strong>'
    .$info.'</strong></legend> 
                <span class="norm">Dein Login war erfolgreich!</span><br><bt> 
                Du kannst <a href="index.php"><b>hier</b></a> zum Index zurückkehren. 
                </fieldset> 
            </div>'

        } 
        else 
        { 
        echo 
    '    <div class="field" style="width:480px" align="left"> 
                <fieldset> 
                <legend><strong>'
    .$info.'</strong></legend> 
                <span class="rot">Du hast eine falsches Passwort oder einen falschen Benutzernamen eingegeben!</span><br><bt> 
                <a href="javascript:history.back()"><b>zurück</b></a> zum Login 
                </fieldset> 
            </div>'


        } 
     

     }

    ?>
    Viele Grüße
    Norman
     
  7. Normaniac

    Normaniac MacUser Mitglied

    Beiträge:
    119
    Zustimmungen:
    3
    MacUser seit:
    16.06.2006
    Ist das hier richtig?

    ... FROM $user_table WHERE ...
     
  8. mores

    mores MacUser Mitglied

    Beiträge:
    3.575
    Zustimmungen:
    106
    MacUser seit:
    23.12.2003
    vielleicht sind leerzeichen in der datenbank drin.
    hatte ich mal, k.a. warum.
    jedenfalls musst du diese dann weg-TRIM()-men.
     
  9. Normaniac

    Normaniac MacUser Mitglied

    Beiträge:
    119
    Zustimmungen:
    3
    MacUser seit:
    16.06.2006
    Ich habs eben mal getestet. Der Codeblock, den ich weiter oben gepostet habe, hat bei mir funktioniert. If-Abfrage war erfolgreich. Probiers mal.

    Viele Grüße
    Norman
     
  10. DeineMudda

    DeineMudda unregistriert

    Beiträge:
    859
    Zustimmungen:
    72
    MacUser seit:
    12.05.2005
    Du bist dir schon im klaren darüber, dass die Zeilen

    Code:
    $name = $_POST['nick'];
    und
    Code:
    WHERE `user_name` = '$name'
    der PHP-Super-DAU-GAU schlechthin sind, oder?
     
Die Seite wird geladen...

Diese Seite empfehlen