Wo kommt $username her?
Hallo,
ich bins schon wieder
Hab gerade meine Seite die ich zuvor lokal getestet hab hochgeladen. Doch jetzt funktioniert der User Login nicht mehr, Benutzer wird nicht gefunden. Ich verwende folgende Abfrage:
Hab schon mit mysql_affected_rows geprüft, es werden 0 Datensätze ausgewählt.PHP-Code:$sql ="
SELECT
spitzname,
passwort,
id_user
FROM
user
WHERE
spitzname = '".$username."';";
Die Datenbank wurde auch 1-zu-1 übernommen.
MySQL ist auch jeweils Version 5
![]()
Wo kommt $username her?
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Und wie wird der Query abgesetzt? Hast Du ein "or die(mysql_error())" dahinter, damit man einen Anhaltpsunkt bekommt?
Hast Du den Query online in PhpMyAdmin oder MySQLDumper manuell ausgeführt und die Syntax überprüft? Eventuell gehört user als Befehlswort in backticks (`user`)?
Und wenn Du es schon schaffst auf die Dokumentation zu verlinken (sehr löblich), dann solltest Du auch verstehen, dass mysql_affected_rows so von Dir falsch angewendet wird.
Da steht nichts davon, dass das auch bei Selects funktioniert. Versuchs mal lieber mit mysql_num_rows().mysql_affected_rows() liefert die Anzahl betroffener Datensätze durch die letzte INSERT, UPDATE oder DELETE ...
Hallo Daniel,
ich vermute eher das es schlicht ein register_globals Problem ist und weniger mit der DB zu tun hat. Es soll bestimmt $_POST['username'] heissen und nicht $username.
Das mit dem mysql_affected_rows ist vollkommen richtig, allerdings nur für die mysql_ Variante. Bei mysqli_affected_rows (Doku) liefert es bei einem SELECT die Anzahl der gefundenen DS zurück. (Wollte das nur mal so nebenbei als OT Info erwähnen)
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Hi Rizzo,
ich stimme Dir in allen Punkten (mal wieder) zu.
Danke auch für die Info bezüglich mysqli. Das war mir auch noch nicht bekannt, da ich davon ausgegangen bin, dass sich gleichnamige Funktionen auch gleich verhalten. Aber man lernt bekanntlich ja nie aus.
Weiter oben gibt es noch einen Schnipsel wo die Variablen zugewiesen werden und die Funktion auch aufgerufen wird.
Ich hab mysql_num_rows() verwendet, hab mich nur verschrieben. Hatte es davor mit mysql_affected_rows() probiert und als dann -1 rausgekommen ist hab ich mal nachgelesenPHP-Code:$username = $HTTP_POST_VARS["username"];
$passwort = $HTTP_POST_VARS["passwort"];
login($username, $passwort, $link, &$_SESSION);
Das mit mySQLi ist ein interessanter Aspekt, XAMPP verwendet nämlich mySQL, auf dem Webspace ist dagegen mySQLi. Könnte es vielleicht daran liegen?
MySQL und MySQLi sind keine Unterschiedlichen Datenbanken sondern unterschiedliche "Zugriffstreiber" von PHP.
Der "einfachste" Grund könnten unterschiedliche php.ini Konfigurationen sein.
PS:
Lies die auch mal Artikel über XSS (Cross Site Scripting) durch, nie Usereingaben vertrauen.
Aber was kann in php.ini so anders sein dass die Abfrage keine Ergebnisse liefert?
Hast Du mal die Vorschläge von DSB ausprobiert?
1. > Und wie wird der Query abgesetzt?
2. > Hast Du ein "or die(mysql_error())" dahinter, damit man einen Anhaltpsunkt bekommt?
3. > Hast Du den Query online in PhpMyAdmin oder MySQLDumper manuell ausgeführt und die Syntax überprüft?
4. > Eventuell gehört user als Befehlswort in backticks (`user`)?
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
Was meinst du mit wie wird der Query abgesetzt?
"or die" war auch schon da, gibt keinen Fehler aus.PHP-Code:$result = mysql_query($sql, $link) or die("Anfrage fehlgeschlagen: ".mysql_error());
Im PHPMyAdmin funktioniert die Abfrage, hab da halt die Variable durch einen festen Wert ersetzt (dann scheints wohl an der Variable zu liegen)
Bei 'user' gibts nen MySQL Error
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
In der Variable ist echt ein Fehler, das hier wird ausgegeben
Aber wie kann das sein? Die wurde ja definiert:PHP-Code:SELECT spitzname, passwort, id_user from user WHERE spitzname = '..';
PHP-Code:if(isset($_REQUEST["action"])){
switch($_REQUEST["action"]){
case "login":
$username = $HTTP_POST_VARS["username"];
$passwort = $HTTP_POST_VARS["passwort"];
login($username, $passwort, $link, &$_SESSION);
break;
case "logout":
...
case "profil_speichern":
...
}
}
Poste doch mal alles was zum Login gehört. Du fängst immer hinten an und postest nur das SQL Statement - damit kann man praktisch Null anfangen, weil der Fehler schon viel früher passiert ist. Dann ratet man herum was es sein könnte, ob register_globals oder anderes. Dann, wenn schon massig Zeit verplempert wurde, kommst Du mit 'nem 2. Schnipsel an in dem man dann sieht das es daran nicht gelegen haben kann. Dann ratet man da wieder herum, bis Du auch erst dann wieder mit einem weiteren Schnipselchen ankommst, usw.
Sind wir hier bei einer Schnitzeljagd?? DU hast ein nicht funktionierendes Script. DU brauchst Hilfe dabei. Dann liefer gefälligst auch ausreichende Informationen (HTML Formular, PHP Code aus dem ersichtlich wird wie A) die Usereingabe verarbeitet wird ... B) die Datenbank konnektiert wird ... C) das Statement an die DB abgesetzt wird ... D) überprüft wird wo der Status des Erfolg abgefragt wird), das man überhaupt helfen kann. Les Dir doch mal diesen Thread aufmerksam durch und dann versuche es nochmal!
Nebenbei bemerkt; $HTTP_POST_VARS hat man in der Steinzeit verwendet, heutzutage nimmt man statt dessen $_POST
Sorry wenn der Beitrag etwas schroff rüber kommt, aber es ist nervig. Schau Dir nochmal den Thread genau an dann wird dir auffallen, dass mittlerweile 4 (!!) Leute versucht haben dir zu helfen und jedesmal wenn einer von denen seine Zeit hier verplempert hat, kommst Du hinterher mit einem weiteren Schnipsel Code an. Wenn Du Hilfe erwartest, solltest Du den gewillten Helfern vielleicht auch etwas entgegen kommen und sie mit ausreichend Information versorgen.
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Du wirst es mir nicht glauben, aber ich hab mir den Thread sogar davor durchgelesen
Hab mir halt gedacht dass das unnötig ist, da es meiner Meinung nach nur an der Abfrage liegen kann.
Hab den Fehler jetzt gefunden, lag an $HTTP_POST_VARS, hab die in $_POST umbenannt.
Danke Rizzo und den anderen![]()
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)