Einfache SQL Abfrage zwingt mich in die Knie *HILFE*

Moin Leute,

Ich bin gerade dabei für meine Site n Loginscript zu schreiben
Doch scheitere ich bei der SQL Abfrage.

Code:
 $result = mysql_query("SELECT * FROM login WHERE username='user'");

Mehr will ich ersteinmal garnicht überprüfen aber selbst das geht nicht.

Ich kann noch ein klares " SELECT * from login WHERE username!= "" "
Da bekomm ich Ergebnisse.
Ich kann auch einzelene Rows darstellen.

Aber DAS diese klitzekleine Abfrage mag mich nicht.

Dazu das ihr auch ned glaubt ich nutz den falschen Namen noch n htmlsnipped den ich hierzu verwende:
Code:
$user     = $_POST["user"];
$passwort = $_POST["pass"]

Weiss einer da nen Rat, ich versteh es einfach nciht mehr.

MfG,

Tk
 
Original von TeeKayo2
Code:
 $result = mysql_query("SELECT * FROM login WHERE username='user'");
da fehlt ein $
das muss $user heißen

Deine Abfrage ist allerings nicht sicher, da der gepostete Inhalt ungefiltert im Query Verwendung findet. Sicherer wäre es, wenn zum Beispiel nur mit Hashes gearbeitet werden würde. z.b. WHERE MD5(username)=MD5($user)
 
$oul:
Nein, mySQL vergleicht mit einem einfachen Gleichheitszeichen.

Wegen des Problems, welches Mackz anspricht: Stelle vorher sicher, dass kein fremder Code in $user landen kann, zur Not durch escapen von Quotes (falls magic_quotes nicht aktiviert sind).
 
Hi,

Ersteinmal danke für eure Antworten nur ist es leider nichts davon.

Das es in SQL ned == ist is klar ^^
Das mit dem $ is Jacke wie Hose wie ich in einige Beispielscripten sah und ich habe sowieso beides ausprobiert, hier nur letzten Versuch gepostet.

Das Sicherheitsproblem wird noch gelöst.
Das Passwort verschlüssel ich natürlich nach MD5 den Usernamen <B>bisher</B> nicht, ist aber ne gute Idee um aufs escapen zu verzichten!! OO :D

Also kann es sich nun noch jemand erklären =)

MfG,

Teekayo?
 
bitte anstatt:
Code:
$user     = $_POST["user"];
$passwort = $_POST["pass"];
einfach
Code:
$user     = mysql_real_escape_string($_POST["user"]);
$passwort = mysql_real_escape_string($_POST["pass"]);
benutzen.
Der korrekte Query ist ja oben schon erklärt worden ;)
Btw. bitte poste immer Fehlermeldungen dazu falls welche kommen oder was die ausgabe ist.
Das hilft bei der Fehlersuche ;)
Imrahil
 
Ich glaube, du musst es so machen, aber ich bin mir nicht sicher, versuchs einfach mal :
Code:
$result = mysql_query("SELECT * FROM login WHERE username='user'");
$rows = mysql_fetch_array($result, MYSQL_NUM);

if($_POST['user']==rows[1]&&$_POST['pass']=rows[2]){


  // Login erfolgreich

}else{

  // Falsche daten

}

(Du musst evtl. rows[1] bzw. rows[2] abändern)

cya xsheep
 
es muss auf jedenfall $user sein, alles andere wie schon gesagt ist falsch
weiterhin ist dann noch zusagen das ein SELECT * sehr aufwendig ist, du solltest lieber angeben was genau du haben willst.
echo mysql_error();
sollte auch nach jedem query drin sein.
und auch das escapen wie imrahil es schon vorgeschlagen hat ist wichtig,
du kannst aber auch mysql_escape_string statt mysql_real_escape_string verwenden, seine variante passt sich jedoch der verwerdeten verbindung an
 
Hallo,

Ich habs seid Gestern, das Board war nur ledier nicht in der Lage meine Antwort zu posten.

Es lag daran das ich nur array[1] und 2 ausgegebe habe aber nach 0 gefragt hatte, kein wunder das dort nichts erscheint Oo

Mit dem escapen, das ist lustig, ich hatte nämlich schon selbst einige SQL injections versucht aer bemerkt das Php automatisch "stripslashes" ausführt.

Trotzdem danke für eure Hilfe,

MfG,

TeeKayo?
 
du meinst wohl addslashes? Du solltest dich aber nicht drauf verlassen das gpc magic quotes an ist, denn genau das ist dafür verantwortlich, soweit ich mich erinnere ist das in einer der neueren php versionen schon nichtmal mehr dabei
 
Hi,


Ja klar mein ich Add ned strip ... :)

Wieso verlassen, ich "verlasse" mich nciht darauf.
hab nur gesehen das es mir nicht möglich war ne Injection zu machen und das ich dann einen neuen user namens" \'Drop ..." in meiner DB hatte ;)

Wenn ich fertig bin mit dem gröbsten auf der Page kommen noch einige checks, da könnt ihr euch dann auch gerne wieder beteiligen =)!

MfG,

TK
 
Original von treo
es muss auf jedenfall $user sein, alles andere wie schon gesagt ist falsch

Das stimmt! Was hier wohl verwirrung gebracht hat ist, dass man bei doppelten Anführungszeichen die Variablen nicht escapen muss um gegensatz zu einfachen Anführungszeichen, wo man jede Variable escapen muss. Wie gesagt müssten wir wissen, wie die Fehlermeldung lautet um dir genauer helfen zu können. Kann vieles sein, was da los ist ^^

//EDIT

Also wenn user eine PHP-Variable ist muss auf jeden Fall ein $ davor. Der übersicht halber würde ich es noch escapen. Zumindest mache ich das immer. Und zur Fehlervorbeugung um Tabellen-/Spaltennamen ` setzen.

Sprich:
Code:
$result = mysql_query("SELECT * FROM `login` WHERE `username`='".$user."'");

Oder ist das Problem inzwischen behoben?
 
ich verstehe ehrkich gesacht deine frage nicht ?(
Aber ich kann dir helfen wenn du einfach ein Login script suchst , denn ich arbeite im mom an nem billigen broswergame ^^ und brauche dafür natürlich auch nen Login .
Ich habe schon ein Grundscript und ich denke , dass das auch soweit funzt (muss nur noch eingebaut werden) aber du kannst mich ma anschreiben (von mir aus auch per icQ oder msn oda mia egal) und dann können wir ja was zusammen arbeiten ;)


DaWeed aka. Rider
 
Zurück
Oben