$login_username = $_POST["username"]; $login_password = $_POST["password"]; $_SESSION["username"] = $login_username; $check_query = "SELECT username, password FROM users WHERE username LIKE '$login_username' LIMIT 1"; $check_query_now = mysql_query($check_query) or die ("Login Abfrage nicht möglich."); $check_query_row = mysql_fetch_object($check_query_now) or die ("MySQL Fetch nicht möglich.");
Eigentlich müsstes du das selber erst ausprobieren und dann fragen Aber um deine Frage zu beantworten: Nein, du hast da einige Fehler drinne.
PHP Code:
<?php
include('../config/database_login.php');
$login_username = $_POST["username"]; //POST evtl. auch escapen für die Sicherheit z.B. mit mysql_real_escape_string(); $login_password = $_POST["password"]; $_SESSION["username"] = $login_username; $check_query = "SELECT username, password FROM users WHERE username LIKE '$login_username' LIMIT 1"; $check_query_now = mysql_query($check_query) or die ("Login Abfrage nicht möglich."); $row = mysql_fetch_object($check_query_now) or die ("MySQL Fetch nicht möglich."); //die Variable war falsch benannt.
if($row->username == $login_username AND $row->password == $login_password) { //zum Vergleich benutzt man == nicht = echo "Login erfolgreich"; } else { echo "Login nicht erfolgreich."; } ?>
Du benutt mysql real escape string falsch. Schau dir dazu nochmal die entspr. php.net Seite an. Es wäre aber eh besser, wenn du mysqli oder PDO mit Prepared Statements verwenden würdest. Wenn es ein größeres Projekt ist, könntest bzw. solltest du einen OR-Mapper wie Propel oder Doctrine einsetzen.
Ansonsten: Ich würde eine Zeile, in der Benutzername und Passwort stimmen, abfragen. Wenn eine entspr. Zeile gefunden wurde, ist der Login erfolgreich, wenn nicht, eben nicht (die Anzahl der gefundene Zeilen bekommst du mit mysql rows oder so raus).
Edit: Du überträgst den Benutzer in die Session bevor du überhaupt weißt, ob der Login erfolgreich war. Sicher, dass du das möchtest?
$valid_session = $_SESSION["username"]; $sql_coins = "SELECT username, usercoins FROM usercoins WHERE username LIKE '$valid_session' LIMIT 1"; $sql_coins_done = mysql_query($sql_coins) or die ('MySQL-Fehler:'.mysql_error()); $sql_coins_row = mysql_fetch_object($sql_coins_done);
Du hast = (Zuweisung) statt == (inhaltlicher Vergleich, ggf. wird implizit gecastet) bzw. === (inhaltlicher Vergleich + Datentypen werden vergleicht) geschrieben. Wenn dir der Fehler öfters passiert, wird von manchen empfohlen, die Variable immer auf die rechte Seite des Vergleichs zu tun - geht natürlich nur, wenn eine Variable gegen eine Konstante bzw. Literale verglichen wird). Das hat den Vorteil, dass du eine Fehlermeldung bekommst, wenn du aus Versehen zuweist statt vergleichst.
Aber wieso vergleichst du den Benutzername (String) gehen einen Wahrheitswert? Wenn du prüfen möchtest, ob das Feld "username" in der Session gesetzt ist, verwende lieber isset(): if (isset($_SESSION["username"])). isset() prüft, ob es das entsprechende Element im Array gibt (und ob es ungleich null ist). Das ist vermutlich eher das, was du haben möchtest.
Ferner noch drei Dinge: Wieso verwendest du LIKE? Der Benutzername muss genau stimmen, also solltest du "=" verwenden. Dann solltest du die Namen der Felder und Tabellen im Query noch in `` setzen. Das ist hier zwar nicht zwingend erforderlich, wenn du aber mal einen Namen verwendest, der zufällig auch ein Schlüsselwort ist, bekommst du einen Fehler. Natürlich müsstest du nur solche Namen in `` setzen, Zwecks der Einheitlichkeit würde ich aber alle so markieren.
Zuletzt solltest du die Datenbankabfrage auch in den Rumpf deiner if-Anweisung setzen. Denn wenn kein Benutzername in der Session gesetzt wurde, ist die Abfrage unnötig. Ergo kannst du so unnötige Abfragen umgehen.
... und ich würde hinter jedes header(Location:...") ein exit(0) setzen, sodass das PHP-Skript nicht weiters ausgeführt wird (hier natürlich nicht unbedingt nötig, da danach nichts mehr kommt). Eine Weiterleitung mit header() erweckt nämlich oft den Eindruck, dass die Seite ab der Anweisung abgebrochen wird, da man vom Rest im Browser nichts mehr sieht. Der restliche PHP Code wird aber, selbstverständlich, trotzdem ohne expliziten Abbruch mit die() oder exit() noch ausgeführt, was so teilweise zu Sicherheitslücken oder zunächst "komischem" Verhalten der Seite führen kann - sofern man sich diesem Fakt als Einsteiger nicht bewusst ist.
Wenn ich jetzt keinen Fehler gemacht habe müsste es so funktionieren.
Du musst natürlich noch das Passwort, was der Benutzer im Formular eingetragen hat in der Variable
$loginform_pswd
speichern und den Benutzernamen aus dem Loginformular in der Variable
$loginform_usr_name
speichern.
MW3 Nat, Wie funktioniert es ? 10/28/2012 - Call of Duty - 22 Replies Hallo Leute,
Hab mir MW3 gekauft und möchte es unbedingt mit nem Freund den koop zocken.
Leider steht da was von Nat Typ : Strikt !
Erst wusste ich nicht was ich machen sollte habs gegoogelt und teilweise hab ich es dann verstanden (einigermaßen)
Also ich habe Alice, bin auch auf die Seite hab mich eingeloggt und die Ports freigegeben... dennoch steht bei mir in MW3 immer noch strikt -.-
Hab diese ports freigegeben
TCP 80
UDP 88
Funktioniert das? 08/21/2012 - Consoles - 8 Replies Ich sehe es gibt so eine Seite Wie Playspan nur für Ms Points??
Funktioniert das?
Seite??: Points2shop - Earn Points for Free Rewards
Lord Wahl funktioniert nicht mehr / Behemoth Dungeon Eingang funktioniert nicht mehr 07/11/2012 - Flyff Private Server - 3 Replies Wie es im Titel steht haben wir momentan 2 Probleme.
Aus ungeklärten Ursachen geht mit Mal die Lord Wahl nicht mehr.
Vor 2 Wochen funktionierte die Lord Wahl noch ohne Probleme, dieses Wochenende konnte man sich normal aufstellen, die Aufstellung wurde aber nicht geschlossen. Man konnte sich auch Samstag und Sonntag noch aufstellen.
Außerdem wurde das Voting nicht gestartet, es wurde nicht möglich, jemanden der aufgestellten zu wählen.
Wie gesagt, vor 2 Wochen und auch vor 4 Wochen...
Bei mir funktioniert das Löschcode nicht. Er hat mal funktioniert 01/07/2010 - Metin2 Private Server - 0 Replies Hi. Also auf mienem PServer geht das mit dem Löschcode nicht. Kann mir jemand sagen warum? Ich weiß noch das es mal ging.
Aber den Spieler in der Datenbank löschen geht nicht weil da diser lvl 0 charackter bleibt und ich nciht weiß wie man den weg kriegt
Bitte kan mir jemand helfen.
Funktioniert das? 10/05/2007 - Flyff - 3 Replies Hi alle zusammen!
Gestern hatte ich ein Gedankenblitz!!!UHHHH!!!Und jetzt wollt ich mal fragen ob das möglich ist. Kann man bei den skills die FP oder die MP die für einen skill gebraucht wird niedriger machen ??? Würde das gehn ????:D Also wenn das funtzt dann wüsste ich was ich mache :D:D:D:D!!!