Befehlskette ausführen
Sven
- php
Moin!
Ich befürchte ich stehe auf dem Schlauch. Momentan führe ich folgendes (in der Art) aus:
eval(" $toll='super'; include('" . $ochne . ".php'); echo 'perfekt'; ");
Wichtig ist dabei, dass in der includierten Datei alle Variablen zur Verfügung stehen.
Ist eval da wirklich die einzige Möglichkeit?
Schonmal Danke im Voraus für Hilfe.
MfG
Sven
Ich befürchte ich stehe auf dem Schlauch. Momentan führe ich folgendes (in der Art) aus:
eval(" $toll='super'; include('" . $ochne . ".php'); echo 'perfekt'; ");
Wieso führst du per eval() feststehenden Code aus, wenn du ihn genauso gut direkt in das Skript schreiben könntest?
Ich befürchte ich stehe auf dem Schlauch. Momentan führe ich folgendes (in der Art) aus:
eval(" $toll='super'; include('" . $ochne . ".php'); echo 'perfekt'; ");
Wieso führst du per eval() feststehenden Code aus, wenn du ihn genauso gut direkt in das Skript schreiben könntest?
Siehe Oben:
"Die Befehlskette die ausgeführt werden soll ist nicht gerade unkompliziert und wird hunderte male verwendet, das will ich vereinfachen um den Script handlicher zu machen"
Mahlzeit Sven,
eval(" $toll='super'; include('" . $ochne . ".php'); echo 'perfekt'; ");
Wieso führst du per eval() feststehenden Code aus, wenn du ihn genauso gut direkt in das Skript schreiben könntest?
"Die Befehlskette die ausgeführt werden soll ist nicht gerade unkompliziert und wird hunderte male verwendet, das will ich vereinfachen um den Script handlicher zu machen"
Das heißt also, der per eval() auszuführende Code enthält außer dem Namen der mittels include() einzubindenden Datei noch weitere Variablen? Woher sollen wir das wissen, wenn Du das nicht schreibst?
Wenn er das nicht tut, sondern bis auf die Dateinamen fest ist, brauchst Du kein eval().
MfG,
EKKi
Mahlzeit Sven,
eval(" $toll='super'; include('" . $ochne . ".php'); echo 'perfekt'; ");
Wieso führst du per eval() feststehenden Code aus, wenn du ihn genauso gut direkt in das Skript schreiben könntest?
"Die Befehlskette die ausgeführt werden soll ist nicht gerade unkompliziert und wird hunderte male verwendet, das will ich vereinfachen um den Script handlicher zu machen"
Das heißt also, der per eval() auszuführende Code enthält außer dem Namen der mittels include() einzubindenden Datei noch weitere Variablen? Woher sollen wir das wissen, wenn Du das nicht schreibst?
Wenn er das nicht tut, sondern bis auf die Dateinamen fest ist, brauchst Du kein eval().
MfG,
EKKi
Nein die Variable im Include ist tatsächlich die Einzigste, aber gleichzeitig werden noch mehrere Funktionen aufgerufen und verarbeitet.
Ich werde die Befehlskette wohl einfach in eine Datei auslagern und statt "eval" dann eben "include" benutzen.
Mahlzeit Sven,
eval(" $toll='super'; include('" . $ochne . ".php'); echo 'perfekt'; ");
eval() is evil! In JEDER Programmiersprache und IMMER!
Wieso schreibst Du nicht einfach:
$toll='super';
include("$ochne.php");
echo 'perfekt';
Ist eval da wirklich die einzige Möglichkeit?
eval() ist NIEMALS eine Möglichkeit - schon gar keine gute!
MfG,
EKKi
eval() ist NIEMALS eine Möglichkeit - schon gar keine gute!
doch, es gibt in der tat viele einsatzgebiete für eval - aber es gibt immer eine kompliziertere lösung, die ohne eval auskommt - nur eine frage des aufwands
sehr ungünstig ist eval aber zb für template-engines, automatische updatefunktionen oder dergleichen
Mahlzeit suit,
doch, es gibt in der tat viele einsatzgebiete für eval - aber es gibt immer eine kompliziertere lösung, die ohne eval auskommt - nur eine frage des aufwands
... und der Sicherheit. Und gerade aus diesem Grund ist auch KEIN EINZIGES der genannten Anwendungsgebiete eine Möglichkeit für eval(), wenn eine sicherere Methode existiert, um das gleiche Ergebnis zu erreichen.
sehr ungünstig ist eval aber zb für template-engines, automatische updatefunktionen oder dergleichen
"Sehr ungünstig" ist in diesem Zusammenhang die Untertreibung des Jahrtausends ...
MfG,
EKKi
... und der Sicherheit. Und gerade aus diesem Grund ist auch KEIN EINZIGES der genannten Anwendungsgebiete eine Möglichkeit für eval(), wenn eine sicherere Methode existiert, um das gleiche Ergebnis zu erreichen.
wenn es sich um ein geschlossenes system für die interne verwendung handelt und nicht um eine webanwendung, kann eval sehr viel zeit sparen - nur für öffentlich zugängliche dinge ist es defintiv verkehrt
"Sehr ungünstig" ist in diesem Zusammenhang die Untertreibung des Jahrtausends ...
replace("sher ungünstig", "potentiell gefährlich", $vorheriger_post);
Mahlzeit Sven,
eval(" $toll='super'; include('" . $ochne . ".php'); echo 'perfekt'; ");
eval() is evil! In JEDER Programmiersprache und IMMER!
Für einen Amateur ja, für jemanden der damit umgehen kann nicht unbedingt.
Wieso schreibst Du nicht einfach:
$toll='super';
include("$ochne.php");
echo 'perfekt';
>
Die Befehlskette die ausgeführt werden soll ist nicht gerade unkompliziert und wird hunderte male verwendet, das will ich vereinfachen um den Script handlicher zu machen
>
> > Ist eval da wirklich die einzige Möglichkeit?
>
> eval() ist NIEMALS eine Möglichkeit - schon gar keine gute!
>
Die Befehlskette ist zu 100% aus internen Variablen zusammengesetzt, sollte anderweitig eine Sicherheitslücke eine Manipulation dieser zulassen, dann ist das eval() mein geringstes Problem ;)
Übrigens brauchen wir auch nicht darüber zu diskutieren, wie gefährlich eval() ist, sonder eben darüber wie ich es ersetzen könnte :)
MfG
Sven
Hallo Sven,
eval(" $toll='super'; include('" . $ochne . ".php'); echo 'perfekt'; ");
eval() is evil! In JEDER Programmiersprache und IMMER!Für einen Amateur ja, für jemanden der damit umgehen kann nicht unbedingt.
mit Verlaub, Du hörst Dich nach Amateur an. Ich habe eval() noch nie benötigt.
Wieso schreibst Du nicht einfach:
$toll='super';
include("$ochne.php");
echo 'perfekt';
> >
>
> Die Befehlskette die ausgeführt werden soll ist nicht gerade unkompliziert und wird hunderte male verwendet, das will ich vereinfachen um den Script handlicher zu machen
Schon mal was vom Konzept der Funktion gehört, vom Konzept der Objekte, ihrer Eigenschaften und Methoden? Es liest sich nicht so.
Freundliche Grüße
Vinzenz