Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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)

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

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

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

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

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.

jo danke VaNaTiC hast mir sehr geholfen ^^

funzt jetzt alles

und eval brauch ich zum einlesen von meinen teplate datein ;)

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

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.

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.