kostenloser Webspace werbefrei: lima-city


Loginsystem-problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    demonic-legends

    Kostenloser Webspace von demonic-legends

    demonic-legends hat kostenlosen Webspace.

    Hallo,
    ich arbeite momentan an einem neuen Projekt, leider gibt es ein Problem mit dem Loginsystem.

    Die Accountdaten sind in einer Tabelle in einer MySQL-Datenbank gespeichert, sobald ich die Daten in das Loginformular eingebe lädt er kurz und es passiert nichts.

    Fehler werden keine ausgegeben, die Verbindung zur Datenbank wird auch hergestellt. (Accounterstellung funktioniert!)

    Könnt ihr mir vielleicht helfen?

    Der Login-Code:

    <?php
    if (isset($_POST['login_send'])) // Abfrage ob Button geklickt
    {
    mysql_connect("mysql.lima-city.de", "Username", "Passwort", "3306");
    mysql_select_db("Datenbank") or die("Keine Datenbankverbindung!");
    
    $sql = "SELECT ".
        "*".
      "FROM ".
        "accounts".
      "WHERE ".
        "(username like '".$_POST["login_username"]."') AND ".
        "(passwort = '".md5 ($_POST["login_passwort"])."')";
    $result = mysql_query ($sql);
    
    if (mysql_num_rows ($result) > 0)
    {
      $data = mysql_fetch_array ($result);
    
      $_SESSION["user_username"] = $data["username"];
      $_SESSION["user_guthaben"] = $data["guthaben"];
    
    
      header ("Location: memberbereich.php");
    }
    else
    {
      header ("Location: index.php?fehler=1");
    }
    }
    ?>


    Findet ihr vielleicht einen Fehler? :S
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Abgesehen davon ob da ein Fehler drin ist oder nicht: du hast hier mindestens einen Sicherheitsfehler! Wenn magic_quotes deaktiviert sind (was sie zwar bei Lima-City nicht sind, aber trotzdem) kann jeder mit einem ' im benutzername einfach deine SQL-Anfrage soweit ändern dass er auf jeden Fall eingeloggt wird, egal ob das Passwort stimmt oder nicht. Das geht sogar noch weiter: man kann mit diesem Fehler das "guthaben" auch verstellen.
    Zum Fehler selbst: du hast warscheinlich die Seite auf Lima-City gehostet. Dort sind standardmäßig Fehlermeldungen deaktiviert. Hast du schon mal versucht diese zu aktivieren (.htaccess)?
    Das würde dir nämlich folgendes zeigen: du hast ein ungültiges SQL-Statement. Das was du als SQL-Statement am Ende hast sieht so aus:
    SELECT *FROM accountsWHERE (username like 'bla') AND (passwort = 'bla2')
    Dir fehlt ein Leerzeichen zwischen * und FROM sowie zwischen accounts und WHERE!
    Warum du beim username ein like verwendest weiß ich nicht.

    Beitrag zuletzt geändert: 18.12.2011 20:59:47 von hackyourlife
  4. Autor dieses Themas

    demonic-legends

    Kostenloser Webspace von demonic-legends

    demonic-legends hat kostenlosen Webspace.

    Hi und danke für deine Antwort!

    Habe die Fehler soweit behoben, es funktioniert aber nach wie vor nicht. Und zu dem Sicherheitsproblem: Wie könnte man das denn umgehen?
  5. demonic-legends schrieb:
    Und zu dem Sicherheitsproblem: Wie könnte man das denn umgehen?


    http://de.php.net/manual/de/function.mysql-real-escape-string.php Auf alle Variablen anwenden die von außen kommen und du in einer Abfrage verwenden willst.

    Lass außerdem gleich mal das like da raus. Entweder man weiß seinen Benutzernamen oder man kommt nicht rein. Damit hilfst du sonst nur Angreifern.
    Dann kommt noch ein LIMIT 1 ans Ende der Abfrage, da sich logischerweise nur ein Benutzer gleichzeitig anmelden kann. Das hier if (mysql_num_rows ($result) > 0) änderst du dann auf if (mysql_num_rows ($result) == 1)

    Dein eigentliche Fehler, warum du nichts siehst, wird sein, dass du schon irgendwo eine kleine Ausgabe hast (Leerzeichen oder sowas; gerne was bevor der <?php-Bereich beginnt). Somit funktionieren die header() unten nicht mehr. Aufgrund der Einstellungen von Lima werden standardmäßig keine Fehlermeldungen angezeigt.

    Beitrag zuletzt geändert: 18.12.2011 21:48:22 von chatter
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    chatter schrieb:
    Dein eigentliche Fehler, warum du nichts siehst, wird sein, dass du schon irgendwo eine kleine Ausgabe hast (Leerzeichen oder sowas; gerne was bevor der <?php-Bereich beginnt). Somit funktionieren die header() unten nicht mehr. Aufgrund der Einstellungen von Lima werden standardmäßig keine Fehlermeldungen angezeigt.

    Damit du solche Fehler auf Lima-City siehst musst du eine
    .htaccess
    -Datei anlegen mit folgendem Inhalt
    php_value display_errors 1
    (dies ist auch hier beschrieben.)
    Wenn schon vor dem header() etwas geschrieben worden ist siehst du das als Warnung. Wenn hingegen noch ein anderer Fehler in deinem Script ist siehst du den auch möglicherweise.
  7. Autor dieses Themas

    demonic-legends

    Kostenloser Webspace von demonic-legends

    demonic-legends hat kostenlosen Webspace.

    So habs mittlerweile zum laufen bekommen, danke für eure Hilfe! :)
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Was war eigentlich der Fehler?
  9. Autor dieses Themas

    demonic-legends

    Kostenloser Webspace von demonic-legends

    demonic-legends hat kostenlosen Webspace.

    Hatte vor dem PHP-Code noch folgende Zeile:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


    Hatte nicht genug hochgescrollt und das dann übersehen, also konnte header() ja nicht funktionieren :x
  10. 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!