Bedingung aus Variablen zusammenbasteln?
Christian
- php
'n Abend!
(Wie) ist es möglich, eine if-Bedingung variabel zu belassen?
Also ich hab mir sowas gedacht:
$grenze = "< 7";
und dann in einer funktion:
function beispiel ($grenze, $etc = "belanglos") {
if ($zahl .$grenze) {
$whatever = $etc;
}
}
So geht's aber nicht.
Gruß
Christian
hi,
(Wie) ist es möglich, eine if-Bedingung variabel zu belassen?
Also ich hab mir sowas gedacht:
$grenze = "< 7";
if ($zahl .$grenze) {
das ginge höchstens per eval() - was aber bekanntlich evil ist.
besser wäre es, wenn du dir für solche einen eigenen kleinen parser schreibst, der den "operator" extrahiert, und davon abhängig einen größer/kleiner/wasauchimmer-vergleich durchführt.
gruß,
wahsaga
hi wahsaga,
besser wäre es, wenn du dir für solche einen eigenen kleinen parser schreibst, der den "operator" extrahiert, und davon abhängig einen größer/kleiner/wasauchimmer-vergleich durchführt.
Ja, aber der Aufwand wäre größer, weil $grenze auch sowas wie "< 7 || $zahl > 14 && != 28" sein können sollen darf ;)
Ich schau mir mal an, was eval() genau ist.
Gruß
Christian
Korrektur:
Nein, so soll $grenze natürlich nicht sein dürfen. ;)
Ist eval auch böse, wenn ich die Variablen sicher fehlerfrei (also nur selber eingegeben und auf Funktion geprüft) sind?
Grüße
Christian
Hallo Freunde des gehobenen Forumsgenusses,
Ist eval auch böse, wenn ich die Variablen sicher fehlerfrei (also nur selber eingegeben und auf Funktion geprüft) sind?
Wenn sie das wirklich sind: Nein.
Gruß
Alexander Brock
echo $begrüßung;
Ist eval auch böse, wenn ich die Variablen sicher fehlerfrei (also nur selber eingegeben und auf Funktion geprüft) sind?
eval() ist genauso "böse" wie jedes andere Werkzeug "böse" sein kann. Unsachgemäßer Gebrauch, absichtlich oder versehentlich, zugelassen oder nur nicht richtig abgesichert, kann zu Schäden führen.
echo "$verabschiedung $name";
hi dedlfix,
eval() ist genauso "böse" wie jedes andere Werkzeug "böse" sein kann. Unsachgemäßer Gebrauch, absichtlich oder versehentlich, zugelassen oder nur nicht richtig abgesichert, kann zu Schäden führen.
Schäden?
Ich kann mir nicht vorstellen, dass ein "Schaden" entstehen kann, weil eval() bei mir überhaupt nicht mit einer Datenbank oder sowas in verbindung steht...
eine Fehlermeldung könnte auftreten und das Skript abbrechen, aber sonst?
cya
Christian
echo $begrüßung;
Schäden?
Ich kann mir nicht vorstellen, dass ein "Schaden" entstehen kann, weil eval() bei mir überhaupt nicht mit einer Datenbank oder sowas in verbindung steht...
Das eval steht erstmal mit nichts in Verbindung. Es versucht einfach nur den übergebenen String als PHP-Code zu interpretieren und auszuführen.
eine Fehlermeldung könnte auftreten und das Skript abbrechen, aber sonst?
Wenn es also jemandem gelingt mit deinem eval beliebigen gültigen PHP-Code zur Ausführung zu bringen, dann kann derjenige alles machen, was du auch mit einem eigenen PHP-Script anstellen könntest: Lesen deiner und ggf. fremder Dateien, Mails von deinem Server aus versenden, Datenbankzugriff, wenn er die Zugangsdaten dazu findet, etc. pp.
echo "$verabschiedung $name";
Hallo dedlfix
Wenn es also jemandem gelingt mit deinem eval beliebigen gültigen PHP-Code zur Ausführung zu bringen, dann kann derjenige alles machen, was du auch mit einem eigenen PHP-Script anstellen könntest: Lesen deiner und ggf. fremder Dateien, Mails von deinem Server aus versenden, Datenbankzugriff, wenn er die Zugangsdaten dazu findet, etc. pp.
Aaaachso! Jetzt begreif ich! Danke für den Klartext!
Na das wäre natürlich richtig evil! xD
Das kann aber bei meiner Verwendung nur passieren, wenn derjenige eh meine PHP-Dateien ändern kann.
Aber über sowas muss man sich natürlich bewusst sein, wenn man's verwendet!
Gute Nacht!
Christian
Moin!
eine Fehlermeldung könnte auftreten und das Skript abbrechen, aber sonst?
Es könnte jemand nach eigenem Belieben:
Beispiel?
eval bolTest=(rm -rf \*
==0)
Löscht zuverlässig den Verzeichnisinhalt, wenn der Benutzer mit dessen Rechten der Webserver gerade läuft, das darf.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
echo $begrüßung;
(Wie) ist es möglich, eine if-Bedingung variabel zu belassen?
Wenn du nicht einen eigenen Parser schreiben willst, könntest du dir eval() ansehen. (Beachte, dass ungeprüfte Usereingaben durch eval() zu schicken Unheil anrichten kann.)
echo "$verabschiedung $name";