Abfrage funkt nicht ganz

  • Habe, klarerweise, eine Frage bezüglich meines untenstehenden Codes!
    Wenn eine Abfrage getätigt wird, und diese kein Ergebnis hat, was wird dann vom Server zurückgeschickt? Denn wenn meine Abfrage unten kein Ergebnis liefert bekomm ich absolut den Schwachsinn zurück plus Fehlermeldung!

    Damits ein bisschen klarer wird hier der Link: http://www.ivanman.at/Sonstiges/MD5/uebersicht.html
    Versucht euch einfach unter irgendeinem Namen anzumelden! Dann sieht man was ich meine!

    Kann mir jemand bitte helfen und sagen was ich ändern muss oder wo mein Fehler liegt?

    [php:1:69914164e7]<?php

    $login = $_POST['login'];
    $passwort = $_POST['passwort'];
    $vpass = md5($passwort);


    if ($login == "")
    {if ($passwort == "")
    {$ausgabe = "Sie wurden nicht erfolgreich eingeloggt!";
    }

    else
    {$ausgabe = "Sie wurden nicht erfolgreich eingeloggt!";
    }
    }


    else
    {if ($passwort == "")
    {$ausgabe = "Sie wurden nicht erfolgreich eingeloggt!";
    }

    else
    {include 'config.php';
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
    die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR
    die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());

    $abfrage = mysql_query("SELECT ID,Login,Passwort FROM Passwort WHERE Login = '$login'");
    while($row = mysql_fetch_assoc($abfrage))
    {$tid = $row['ID'];
    $tlogin = $row['Login'];
    $tpass = $row['Passwort'];
    }

    if ($abfrage = "")
    {$ausgabe = "Sie wurden nicht erfolgreich eingeloggt!";
    $tid = "";
    $tlogin = "";
    $tpass = "";
    }

    else
    {$ausgabe = "Sie wurden erfolgreich eingeloggt!";
    }
    }
    }


    echo $tid."
    \n";
    echo $tlogin."
    \n";
    echo $tpass."
    \n";
    echo $ausgabe;


    ?>[/php:1:69914164e7]

  • Steht doch auf der Seite nach dem Login Check, was nicht stimmt.

    Die Variablen sind nicht definiert.

    Und deine if abfrage stimmt auch nicht.

    Denn $abfrage ist ja nicht leer, demnach wurde man erfolgreich eingeloggt.

    Die Abfrage solltest Du auf $tid machen.

  • Lieber Gast!

    Ich hab es auch mit ner leeren Tabelle versucht! Gleiches Ergebnis! Also muss der Server was zurückschicken, auch wenn das Ergebnis der Abfrage nichts ergibt!
    Und dass dann meine Variablen nicht definiert sind ist mir klar!
    Und bitte was stimmt mit meiner if Abfrage nicht?

  • also habe mir nur mal kurz durchgelesen (bisher nur oberen teil) also erstmal ist die abfrage so wie sie da ist teilweise sinnlos weil z.b.

    Code
    if ($login == "")
       {if ($passwort == "")
          {$ausgabe = "Sie wurden nicht erfolgreich eingeloggt!";
          }
    
    
        else
           {$ausgabe = "Sie wurden nicht erfolgreich eingeloggt!";
          }
       }


    wenn du überprüfst ob login = leer ist brauchst du danach nicht noch überprüfen ob das = leer ist ist doch sinnlos das doppelt zu überprüfen...

    dann zum eigentlichen fehler mach mal aus deinem mysql query die ' vor dem $login weg... daran könnte es liegen.

  • moin,
    irgendwie war das voll der quatsch den du da gecodet hast... :lol:
    es kann sein das der code fehler enthält, weil ich wegen meiner grippe ein handicap hab :(

    so müsste es aussehen
    [php:1:6973cab586]
    <?php
    /* SQL TABELLE
    CREATE TABLE `test` (
    `id` int(255) NOT NULL,
    `login` varchar(255) NOT NULL,
    `pass` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=2 ;
    */

    // DB DATEN
    $dbHost = "127.0.0.1";
    $dbUser = "root";
    $dbPass = "";
    $dbName = "test";

    $connect = mysql_connect($dbHost, $dbUser, $dbPass) or die("Keine Verbindung zum Datenbankserver!");
    mysql_select_db($dbName);


    $login = "rolf"; // musste in $_POST['blabla'] ändern
    $pass = "admin"; // musste in $_POST['blabla'] ändern
    $vpass = md5($pass);
    // das hier müsstest du dann noch aendern oben


    if ($login == "" || $pass == "")
    {
    die("Formular nicht komplett ausgefuellt!");
    }
    else
    {
    $sql = "SELECT * FROM test WHERE login = '".$login."' AND pass = '".$pass."'";
    $do = mysql_query($sql);
    $fetch = mysql_fetch_array($do);

    if($fetch != "")
    {
    $tid = $fetch['id'];
    $tlogin = $fetch['login'];
    $tpass = $fetch['pass'];
    $ausgabe = "Sie wurden erfolgreich eingeloggt!";
    }
    else
    {
    die("Kein Account vorhanden!");
    }
    }


    echo $tid."
    ";
    echo $tlogin."
    ";
    echo $tpass."
    ";
    echo $ausgabe;

    ?>
    [/php:1:6973cab586]

    Gruß crAzywuLf :D

  • Habs mal ausprobiert und es klappt immer noch nicht! Er schreibt mir immer das Ergebnis: Kein Account vorhanden!

    Die Daten sind aber in der Tabelle vorhanden! Also daran kanns nicht liegen!

    Hier nochmal mein jetziger Code:
    [php:1:8cbfd6a2c4]<?php
    error_reporting(E_ALL);
    include 'config.php';
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
    die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR
    die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());

    $login = $_POST['login'];
    $pass = $_POST['passwort'];
    $vpass = md5($pass);


    if ($login == "" || $pass == "")
    {
    die("Formular nicht komplett ausgefuellt!");
    }
    else
    {
    $sql = "SELECT * FROM Passwort WHERE Login = '".$login."' AND Passwort = '".$pass."'";
    $do = mysql_query($sql);
    $fetch = mysql_fetch_array($do);

    if($fetch != "")
    {
    $tid = $fetch['ID'];
    $tlogin = $fetch['Login'];
    $tpass = $fetch['Passwort'];
    $ausgabe = "Sie wurden erfolgreich eingeloggt!";
    }
    else
    {
    die("Kein Account vorhanden!");
    }
    }


    echo $tid."
    ";
    echo $tlogin."
    ";
    echo $tpass."
    ";
    echo $ausgabe;
    ?>[/php:1:8cbfd6a2c4]

  • Hab den Fehler schon gefunden!

    Es darf nicht heißen:

    Zitat


    $sql = "SELECT * FROM Passwort WHERE Login = '".$login."' AND Passwort = '".$pass."'";

    sonder:

    Zitat


    $sql = "SELECT * FROM Passwort WHERE Login = '".$login."' AND Passwort = '".$vpass."'";


    Danke für eure Hilfe!

  • moin,

    Zitat


    Naja, kann sein dass ich da ein bissl Mist zusammengecoded habe, aber so is halt am Anfang, oder? Trotzdem danke, werds mal probieren!


    jo hast recht war auch nicht böse gemeint hehe :)

    ansonsten np

    Gruß crAzywuLf :D