if abfrage geht nicht, trotz richtiger eingaben

  1. oconner

    oconner Thread StarterMacUser Mitglied

    Mitglied seit:
    11.01.2006
    Beiträge:
    269
    Zustimmungen:
    0
    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.
     
    oconner, 04.07.2006
  2. ApfelRalf

    ApfelRalfMacUser Mitglied

    Mitglied seit:
    14.01.2004
    Beiträge:
    642
    Zustimmungen:
    22
    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
     
    ApfelRalf, 04.07.2006
  3. Pingu

    PinguMacUser Mitglied

    Mitglied seit:
    04.08.2003
    Beiträge:
    4.900
    Zustimmungen:
    341
    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
     
    Pingu, 04.07.2006
  4. oconner

    oconner Thread StarterMacUser Mitglied

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

    Ganymed01

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

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

    NormaniacMacUser Mitglied

    Mitglied seit:
    16.06.2006
    Beiträge:
    119
    Zustimmungen:
    3
    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
     
    Normaniac, 04.07.2006
  7. Normaniac

    NormaniacMacUser Mitglied

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

    ... FROM $user_table WHERE ...
     
    Normaniac, 04.07.2006
  8. mores

    moresMacUser Mitglied

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

    NormaniacMacUser Mitglied

    Mitglied seit:
    16.06.2006
    Beiträge:
    119
    Zustimmungen:
    3
    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
     
    Normaniac, 04.07.2006
  10. DeineMudda

    DeineMuddaunregistriert

    Mitglied seit:
    12.05.2005
    Beiträge:
    852
    Zustimmungen:
    72
    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?
     
    DeineMudda, 04.07.2006
Die Seite wird geladen...
Ähnliche Themen - abfrage geht trotz
  1. xenon96
    Antworten:
    2
    Aufrufe:
    580
    xenon96
    27.06.2015
  2. max@hismac
    Antworten:
    2
    Aufrufe:
    1.610
  3. max@hismac
    Antworten:
    0
    Aufrufe:
    2.353
    max@hismac
    09.05.2013
  4. falkgottschalk
    Antworten:
    3
    Aufrufe:
    1.130
  5. max@hismac
    Antworten:
    2
    Aufrufe:
    1.853
    nightcoding
    02.06.2012