Fehler im Script: Parse error, unexpected T_STRING...

Flo<H>

Erfahrenes Mitglied
Hallo!
Ich hock jetzt schon seit einer Stunde an der Fehlersuche, find ich aber nicht. Könnt ihr mir vielleicht schnell weiterhelfen?

Ich bekommen folgenden Fehler
Parse error: parse error, unexpected T_STRING in E:\wampp2\htdocs\v03\check.php on line 13
PHP:
<?php
session_start ();
$username = str_replace("[" , "[", $_POST['name']);
$username = str_replace("]" , "]", $username);
$pwd = $_POST['pwd'];
include("./inc/mysql.inc");
$result = mysql_query("SELECT Id, Nickname, Nachname, Vorname FROM v03user WHERE (Nickname like '$username') AND (Kennwort = 'md5($pwd)')");
if (mysql_num_rows ($result) > 0)
{
  $data = mysql_fetch_row($result);     // <--- Line 13 
  $_SESSION["user_id"] = $data[0];
  $_SESSION["user_nickname"] = $data[1];
  header ("Location: main.php?navi=admin&site=admin");
}
else
...
?>

Vielen Dank im Voraus.
Flo
 
Ich vermute, dass das md5($pwd) in der SQL-Abfrage nicht ausgeführt sondern einfach als Zeichenkette übergeben wird. Das führt dann zu einem SQL-Fehler, der als Meldung zurückgeliefert wird. Damit erzeugt dann widerum mysql_num_rows($result) in Zeile 11 einen Fehler der aber erst in Zeile 13 erkannt und gemeldet wird.

Ist ne Vermutung, mehr nicht, versuch mal:
PHP:
$result = mysql_query("SELECT Id, Nickname, Nachname, Vorname FROM v03user WHERE (Nickname like '$username') AND (Kennwort = '".md5($pwd)."')");

EDIT:
Das versteht doch kein Mensch, was ich da geschrieben hab und ein Fehler ist auch noch drin, also nochmal:

md5($pwd) wird wahrscheinlich nicht von PHP ausgeführt, sondern nur $pwd ersetzt. Falls das Passwort also "passwd" ist, dann bekommt SQL in der Abfrage "md5(passwd)" geliefert und nicht das Ergebnis von md5().
Die Folge ist, das SQL md5(passwd) als Funktion interpretiert, die SQL aber nicht kennt, also gibt SQL einen Fehler zurück. Die IF-Abfrage geht noch gut, weil etwas zurückgeliefert wurde, aber eine Fehlermeldung kann PHP nicht in ein Array schreiben (mysql_fetch_rows). Daher der Fehler in Zeile 13.

Bleibt allerdings eine Vermutung.


Gruß
Falk
 
Zuletzt bearbeitet:
So hatte ich es auch schon, aber da kam die gleiche Fehlermeldung. Was mich vor allem wundert ist, dass $result schon weiter oben bei der if-Anweisung:
PHP:
if (mysql_num_rows ($result) > 0)
verwendet wird, da aber kein Fehler ausgegeben wird.
 
Dann lass doch mal mysql_num_rows($result) und $result ausgeben. Mal sehen was dabei rauskommt. Wenn $result keine Ressource ist, dann stimmt was nicht.

EDIT:
Oder gibt mal den evtl. vorhandenen mysql-Fehler aus und überprüf nochmal alle Bezeichner für Datenfelder, Tabellennamen etc.

Vielleicht hast du auch einen Fehler in Zeile 13 der inc-Datei, die du includest.

Gruß
Falk
 
Zuletzt bearbeitet:
So mittlerweile läuft das ganze, aber woran es gelegen hatte weiß ich bis heute nicht. Naja vielleicht lags da dran, dass ich die Datei per copy & paste erstellt habe... Jedenfalls Danke für deine Hilfe.
 
Zurück