kostenloser Webspace werbefrei: lima-city


Eingaben nicht gefunden -> es kommt weiße Seite

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    limabone

    Kostenloser Webspace von limabone

    limabone hat kostenlosen Webspace.

    Hallo,
    ich hab euren Rat bei dem vorherigen Thema von mir umgesetzt, aber jetzt stoße ich auf ein ziemlich Haaresträubendes Problem:
    Wenn ihr euch bitte hier kurz einloggen versucht (einfach irgendwas eingeben) : http://www.the-penguins.com
    seht ihr, dass bei euren falschen Eingaben immer ne weiße Seite kommen wird. Das famose daran ist aber, wenn alles korrekt ist funktionierts...
    Hier habt ihr den code der

    func.login.php (MYSQL Daten wurden ersetzt...)
    <?php
    $db = @new mysqli('mysql.lima-city.de', 'user', 'pass', 'db_138318_3');

    $sql = 'SELECT `user` , `pass`
    FROM db_138318_3.penguins_user
    WHERE user = "'.$_POST['user'].'"';

    ////////////////////////////////////
    // festlegen von $result und $row //
    ////////////////////////////////////

    $result = $db->query($sql);
    while ($row = $result->fetch_assoc()) {

    /////////////////////////////
    // Überprüfen der Eingaben //
    /////////////////////////////

    if ($_POST['pass'] != $row['pass']) {
    $msg = 'Das Passwort ist nicht korrekt!';
    include('./login.php');
    }else{
    $msg_green = 'Wilkommen zur&uuml;ck, '.$_POST["user"].'!';
    include('./login.php');
    }
    }
    ?>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Die Datei func.login.php beinhaltet ja auch keinen HTML-Code oder Ausgaben.
    Deshalb wird die Datei nur verarbeitet, aber nichts ausgegen.

    Aus diesem Grund erscheint die weiße Seite.
  4. Ich frage mich, wie das überhaupt gehen soll. Angenommen es gibt 4 User. Der Einfachheit halber sind die Usernames A-D und die Passwörter der Username in klein.

    Der User loggt sich mit den Daten C und c ein. Ich sage dir, die Ausgabe wird so lauten, vorrausgesetzt du machs endlich mal die Ausgabe der Variable $msg: "Das Passwort ist nicht korrekt!".

    Die Variable hat nämlich folgende Werte:

    1. Durchlauf: 'Das Passwort ist nicht korrekt!'
    2. Durchlauf: 'Das Passwort ist nicht korrekt!'
    3. Durchlauf: 'Wilkommen zur&uuml;ck, D!'
    4. Durchlauf: 'Das Passwort ist nicht korrekt!'

    Nach dem letzten Durchlauf ist wieder die Melung, dass das Passwort falsch ist in der Variable. Durchdenke das bitte nochmal.
  5. desaster-productions

    desaster-productions hat kostenlosen Webspace.

    also zuerst mal:

    $sql = 'SELECT `user` , `pass`
    FROM db_138318_3.penguins_user
    WHERE user = "'.$_POST['user'].'"';


    BÖSE! BÖSE! BÖSE! Mein Benutzername auf neuen Seiten ist grundsätzlich erstmal "' OR 1=1", auch wenn ich noch nicht registriert bin. bei dir würde das einwandfrei klappen ;)

    und zum problem: was steht denn in der login.php drinnen, die du includest?

    und zum weiteren: wenn du einen falschen benutzernamen eingibst, passiert genau.... gar nichts. er kommt nie in die schleife rein, includet die login.php nicht und die seite bleibt weiss (ich erkenne einen zusammenhang zum problem *g*)


    @drafed-map: solange es nur einen User C in der DB gibt, gibts auch nur einen durchlauf. aber du hast recht, schön ist diese art des logins sicher nicht...
  6. desaster-productions schrieb:
    @drafed-map: solange es nur einen User C in der DB gibt, gibts auch nur einen durchlauf. aber du hast recht, schön ist diese art des logins sicher nicht...

    Ja, solange es nur einen User C gibt ist alles in Ordnung. Aber ich habe ja geschrieben, es gibt 4 User, A bis D.


    desaster-productions schrieb:
    BÖSE! BÖSE! BÖSE! Mein Benutzername auf neuen Seiten ist grundsätzlich erstmal "' OR 1=1", auch wenn ich noch nicht registriert bin. bei dir würde das einwandfrei klappen ;)

    Ja, aber eigentlich können wir das nicht wissen, er kann ja die Post- und Get-Informationen schon zu beginn der Seite gefiltert haben, wenn man aber einen solchen Code schickt, halte ich das für sehr unwahrscheinlich.
  7. desaster-productions

    desaster-productions hat kostenlosen Webspace.


    Ja, solange es nur einen User C gibt ist alles in Ordnung. Aber ich habe ja geschrieben, es gibt 4 User, A bis D.

    das meinte ich nicht, ich meinte nur einen use namens "C" (und nicht zwei davon) und beliebig viele andere. das result wird ja durch die where-klausel auf 1 datensatz begenzt. oder überseh ich was?


    Ja, aber eigentlich können wir das nicht wissen, er kann ja die Post- und Get-Informationen schon zu beginn der Seite gefiltert haben, wenn man aber einen solchen Code schickt, halte ich das für sehr unwahrscheinlich.

    ob es gefiltert ist, wissen wir nicht. falls nicht, habe ich ihn/sie auf ne lücke in allen scripts aufmerksam gemacht, welche usereingaben in sql-statements verwenden. besser einmal zuviel warnen als einmal zu wenig *g*

    Beitrag zuletzt geändert: 28.11.2009 16:21:02 von desaster-productions
  8. Autor dieses Themas

    limabone

    Kostenloser Webspace von limabone

    limabone hat kostenlosen Webspace.

    Hmm... ich versteh nicht, was ihr meint, könnt ihr bitte eure Ideen in Codeschnipselform posten?
    Achja, da kommt noch ein Problem dazu, wie soll die Mysql-Abfrage lauten, die mir sagt, ob ein Benutzer schon vorhanden ist?
    Mit
    $mysql = 'SELECT `user` FROM `db_138318_3`.`penguins_user` WHERE user = "'.$_POST['user']'"'
    und anschließenden
    if ($_POST['user'] == $row['user']) {
    $msg = 'benutzer schon vorhanden'
    bla
    }else{
    bla
    bla
    }
    funktionierts auch ned, obwohl ich die Variable $row definiert habe...
  9. Man kann entweder Username und Passwort ungefiltert lassen, in eine SQL-Bedingung reinpacken, und schauen, ob es überhaupt einen Treffer gibt, oder man setzt eine Variable auf false (überflüssig, wenn man schlau genug ist, Register Globals ab zu schalten), durchläuft alle Einträge der User-Tabelle, und prüft bei jedem Durchlauf, ob post-Username gleich DB-Username, und post-Passwort gleich DB-Passwort ist. Wenn die Bedingung erfüllt ist, wird die Variable auf true gesetzt, wenn sie nicht erfüllt ist, passiert garnichts. Nach Beendigung der Schleife wird dann geschaut, ob die Variable true oder false ist.
  10. Autor dieses Themas

    limabone

    Kostenloser Webspace von limabone

    limabone hat kostenlosen Webspace.

    Hab (leider) erst jetzt nachgesehen, weil ich die ganze Zeit rumprobiert hab, und habs sogar gelöst!
    @Drafed-Map: Genau so hatte ich es mir gedacht und hab die ganze Datei umgeschrieben... du hattest recht gehabt

    -- Danke Karpfen (oder nikic), kannst nun schließen

    nikic: Da gelöst ==> geschlossen :)

    Beitrag zuletzt geändert: 29.11.2009 9:27:01 von nikic
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!