PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: Funktion gibt Variable nicht aus mit eval


Scream
2008-04-20, 01:01:35
Ich lese meine Fehler in ein Array ein.
nachrichtenbox ist eine Funktion die den fehler ausgibt.
$errors[] = 'nachrichtenbox("fehler","Fehler beim Bearbeiten der News ".$ntitel.". [" . $db->error . "]");';

Hier lass ich dann mein Array ausgeben:
//-----------------------------------
// Fehler ausgeben
//----------------------------------------
if (!empty($errors))
{
foreach ($errors as $error)
{
eval($error);
}
}

Das Problem ist, dass "$db->error" nciht ausgeführ wird.
Wenn ich die nachrichtenbox aber ohne eval ausführe klappts.
Was muss ich ändern?

Berni
2008-04-20, 01:26:26
Müsstest du die Variablen $ntitel und $db->error nicht schon beim Anlegen des errors-Array in den String einbauen? Zum Zeitpunkt wo du alle Fehler durchgehst könnten die entsprechenden Variablen nämlich wieder überschrieben sein. In dem Fall sind die Anführungszeichen dann falsch (einfach vs. doppelt):
$errors[] = 'nachrichtenbox("fehler","Fehler beim Bearbeiten der News '.$ntitel.'. ['.$db->error.']");';

Gast
2008-04-20, 09:27:27
eval() würde ich nur verwenden wenn es unbedingt notwendig ist, was zum ausgeben einer fehlermeldung sicher nicht der fall ist. das provoziert ja geradezu dass sich jemand einen weg sucht in dein $errors irgendwelche system() aufrufe zu packen...

Kinman
2008-04-20, 10:51:17
das stimmt...
besser wäre:

$errors[] = 'Fehler beim Bearbeiten der News ' . $ntitel . ' [' . $db->error . ']';

//-----------------------------------
// Fehler ausgeben
//----------------------------------------
if (!empty($errors))
{
foreach ($errors as $error)
{
nachrichtenbox('fehler', $error);
}
}

Scream
2008-04-20, 11:03:37
stimmt natürlich!
ist zudem auch übersichtlicher und spart code

dankesehr :)