cuLcha Geschrieben 9. März 2009 Geschrieben 9. März 2009 <?php if(!isset($_SESSION["UserName"])) { if (!isset($_POST["submit"])) { eval ("\$login = \"".gettemplate("login")."\";"); echo $login; } if (isset($_POST["submit"])) { $username = $_POST["username"]; $password = $_POST["password"]; $query = 'SELECT * FROM t_user WHERE UserName="$username" LIMIT 1'; $result = mysql_query($query); $row = mysql_fetch_object($result); var_dump($row->UserName); var_dump($username); if($row->UserPass==$password) { $_SESSION["UserName"] = $row->UserName; $_SESSION["UserID"] = $row->UserID; $_SESSION["isAdmin"] = $row->isAdmin; eval ("\$logged = \"".gettemplate("logged")."\";"); echo $logged; } else { echo 'Benutzername und/oder Passwort waren falsch.<br><a href="?go=login">Login</a>'; } } } elseif(isset($_SESSION["UserName"])) { eval ("\$logged = \"".gettemplate("logged")."\";"); echo $logged; } else { echo 'Es ist ein unbekannter Fehler aufgetreten, bitte setzten Sie sich mit dem Administrator in Verbindung.'; } ?>[/PHP] die variablen die sich das mysql_fetch_object aus dem select hlen soll sind iwi nicht vorhanden, hab mir das mal angeguckt mir var_dump, aber als ergebnis komt NULL bzw. bei var_dump($row); kommt bool(false) dementsprechend funzt der schöne login nicht :S weiß jemand wo das fehler liegt? ich komm nicht weiter -__- danke schonmal im vorraus Zitieren
flashpixx Geschrieben 9. März 2009 Geschrieben 9. März 2009 Lass Dir bitte mal nach dem mysql_query ggf die Fehler der Datenbank anzeigen Phil Zitieren
cuLcha Geschrieben 9. März 2009 Autor Geschrieben 9. März 2009 ich weiß dumme frage, aber wie lass ich mir die fehlermeldung ausgeben?^^ also mit mysql_error($result); oder wie? (musste das noch nie machen und ausserdem gerade in der ausbildung) Zitieren
flashpixx Geschrieben 9. März 2009 Geschrieben 9. März 2009 Das nächste Mal bitte selbstständig suchen: PHP: mysql_error - Manual PHP: mysql_errno - Manual Phil Zitieren
VaNaTiC Geschrieben 9. März 2009 Geschrieben 9. März 2009 (bearbeitet) Ist nicht Dein SQL-Statement in PHP falsch? $query = 'SELECT * FROM t_user WHERE UserName="$username" LIMIT 1'; wenn ich das Stringlateral ' nutze, ersetzt PHP doch meiner Meinung nach $username nicht durch den Inhalt der Variable, oder? Außerdem sollte doch in SQL das doch so sein: $query = "SELECT * FROM t_user WHERE UserName='$username' LIMIT 1"; Eventuell ist deshalb nach mysql_query das $result einfach leer und deshalb kann auch mysql_fetch_object() nix anderes als false zurückliefern, da ja nix mehr im ResultSet drin is. Bearbeitet 9. März 2009 von VaNaTiC Zitieren
cuLcha Geschrieben 9. März 2009 Autor Geschrieben 9. März 2009 Quellcode sieht jetzt wie filgt aus, <?php if(!isset($_SESSION["UserName"])) { if (!isset($_POST["submit"])) { eval ("\$login = \"".gettemplate("login")."\";"); echo $login; } if (isset($_POST["submit"])) { $username = $_POST["username"]; $password = $_POST["password"]; $query = "SELECT * FROM t_user WHERE UserName='$username' LIMIT 1"; $result = mysql_query($query); $row = mysql_fetch_object($result); if($row->UserPass==$password) { $_SESSION["UserName"] = $row->UserName; $_SESSION["UserID"] = $row->UserID; $_SESSION["isAdmin"] = $row->isAdmin; eval ("\$logged = \"".gettemplate("logged")."\";"); echo $logged; } else { echo 'Benutzername und/oder Passwort waren falsch.<br><a href="?go=login">Login</a>'; } } } elseif(isset($_SESSION["UserName"])) { eval ("\$logged = \"".gettemplate("logged")."\";"); echo $logged; } else { echo 'Es ist ein unbekannter Fehler aufgetreten, bitte setzten Sie sich mit dem Administrator in Verbindung.'; } ?>[/PHP] der tipp mit den " " statt ' ' hat bischen geholfen (' ' is ne angewohnheit von mir die ich durch den echo befehl hab ^^) naja auf jedenfall kommt jetzt ne fehlermeldung Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\Dokumente und Einstellungen\Desktop\xampp-win32-1.7.0\xampp\htdocs\ab_web\login.php(20) : eval()'d code on line 4 Zitieren
cuLcha Geschrieben 9. März 2009 Autor Geschrieben 9. März 2009 (bearbeitet) so hab jetzt die Quotes escaped bevor ich sie durch den eval() jage ^^ vorher: eval ("\$login = \"".gettemplate("login")."\";"); echo $login;[/PHP] Jetzt: [PHP]eval ("\$login = stripslashes(\"".addslashes(gettemplate("login")."\";"); echo $login; so die fehlermeldung hat sich auch geändert: Parse error: parse error in C:\Dokumente und Einstellungen\Praktikant\Desktop\xampp-win32-1.7.0\xampp\htdocs\ab_web\login.php on line 4 oh kleiner denkfehler, so is besser: eval ("\$login = \"".addslashes(gettemplate("login"))."\";"); echo $login;[/PHP] Bearbeitet 9. März 2009 von cuLcha Zitieren
flashpixx Geschrieben 9. März 2009 Geschrieben 9. März 2009 Als Hinweis: eval = evil ! Wofür Du überhaupt eval benötigst ist mir völlig schleierhaft Phil Zitieren
VaNaTiC Geschrieben 9. März 2009 Geschrieben 9. März 2009 wenn ich richtig geschaut habe ist der Fehler aus Zeile 20, der Code der mittels eval() ausgeführt werden soll. Der Fehler ist in der 4.Zeile des durch gettemplate("logged") zurückgelieferten Textes. Da ich den Code nicht kenne, keine Chance zu helfen. Aber den Fehler solltest selber finden können Zitieren
VaNaTiC Geschrieben 9. März 2009 Geschrieben 9. März 2009 Als Hinweis: eval = evil ! Wofür Du überhaupt eval benötigst ist mir völlig schleierhaft Phil die Funktion gettemplate() ist 100% selbst eine PHP-Datei und er will die PHP gleich Parsen und nicht nur Einlesen und dann im Hauptkontext erst parsen lassen. Zitieren
cuLcha Geschrieben 9. März 2009 Autor Geschrieben 9. März 2009 jo danke VaNaTiC hast mir sehr geholfen ^^ funzt jetzt alles und eval brauch ich zum einlesen von meinen teplate datein Zitieren
flashpixx Geschrieben 9. März 2009 Geschrieben 9. März 2009 die Funktion gettemplate() ist 100% selbst eine PHP-Datei Mir ist die Funktionsweise von eval durchaus bekaant, aber normalerweise wird innerhalb der php.ini ein solcher Aufruf durch den Admin unterbunden. Zusätzlich habe ich nicht nach der Funktionsweise gefragt, sondern nach dem Nutzen, denn ich sehe absolut für eval keine Notwendigkeit, die man durch eine Function oder ein Object, das man via include/required auslagert bzw der aktuellen PHP Datei hinzufügt, nicht auch lösen kann Phil Zitieren
VaNaTiC Geschrieben 9. März 2009 Geschrieben 9. März 2009 Mir ist die Funktionsweise von eval durchaus bekaant, Das hat auch niemand in Frage gestellt. aber normalerweise wird innerhalb der php.ini ein solcher Aufruf durch den Admin unterbunden. Was ist denn normalerweise? Ich hatte bisher keinen WebSpace, wo ich nicht selbst die INI ändern konnte, wo das eval() unterbunden wurde? Zusätzlich habe ich nicht nach der Funktionsweise gefragt, sondern nach dem Nutzen, Ich verstehe Deinen Einwand leider nicht, denn ich habe Dir doch "seinen" Nutzen und nicht die Funktionsweise erläutert. denn ich sehe absolut für eval keine Notwendigkeit, die man durch eine Function oder ein Object, das man via include/required auslagert bzw der aktuellen PHP Datei hinzufügt, nicht auch lösen kann Da stimme ich Dir zu. Fakt ist Du sagtest: Wofür Du überhaupt eval benötigst ist mir völlig schleierhaft Ich wollte Dir nur vermitteln, was aller Wahrscheinlichkeit der Nutzungsgrund für das eval() ist. Dabei habe ich weder eine Wertung inbezug auf Nutzungsfehler, noch die Funktionsweise erläutert. Wenn Dir das alles bereits bewusst war, dann ist Dein "ist mir völlig schleierhaft" irgendwie unpassend, finde ich. Zitieren
flashpixx Geschrieben 9. März 2009 Geschrieben 9. März 2009 Was ist denn normalerweise? Ich hatte bisher keinen WebSpace, wo ich nicht selbst die INI ändern konnte, wo das eval() unterbunden wurde? Hatte es bei einem Hoster, daher mein Einwand. Ich verstehe Deinen Einwand leider nicht, denn ich habe Dir doch "seinen" Nutzen und nicht die Funktionsweise erläutert. Wenn Dir das alles bereits bewusst war, dann ist Dein "ist mir völlig schleierhaft" irgendwie unpassend, finde ich. Vielleicht meinerseits zu unpräzise formuliert: Es bezog sich das "schleierhaft" auf dieses ganze eval Konstrukt mit stripslashes usw. Ich kenne ja die Funktionseise der Befehle, aber ich denke man kann das semantisch besser und übersichtlicher lösen Sorry für den Ausdruck Phil Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.