Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

<?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 :)

Geschrieben

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)

Geschrieben (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 von VaNaTiC
Geschrieben

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
Geschrieben (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 von cuLcha
Geschrieben

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 :D

Geschrieben
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.

Geschrieben
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

Geschrieben
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.

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...