DOS-look/feel-A-Like in PHP Parameter Problem

vcr

Grünschnabel
Hy!

Ich will, als kleinen Anfang von etwas größerem, eine Art Kommandozeile programmieren, die dann die eingegebenen Funktionen ausführt. Das tut das Script jetzt auch schon. Jetzt will ich aber auch noch mit Parametern arbeiten.

Der User gibt also in einer Kommandozeile ein:
HTML:
function, parameter1, parameter2, parameter3

das speichere ich dann in den Array $command
und PHP soll ausführen:
PHP:
$command[0]($command[1], $command[2], $command[3])

Dass $command[0]() alleine funktioniert weiß ich, aber wie bringe ich es zustande, dass die Elemente 1,2,3 mit jeweils einem "," dazwischen als Parameter für die Funktion ausgebe? Ich will, dass das automatisch geht, und ich nicht für jede Funktion extra Code schreiben muss.

Kann mir da jemand helfen? Danke im Voraus!!
 
Schau dir mal die funktion call_user_func_array() an, damit kannst du beliebige funktinoen aufrufen und ein array übergeben das dann die werte werden.
 
Hi,

stimmt, die gab's ja auch noch. Weiß jemand, ob und inwiefern das in diesem Fall sicherheitstechnisch einen Unterschied zur Methode über eval macht?

LG
 
jop, ich glaub, das ist es was ich gesucht habe, jetzt allerdings happerts mit dem ganzen Script, plötzlich. Es will die Funktionen nicht mehr ausführen... aber das krieg ich schon wieder hin danke!!

was das wird? so 'n art betriebsystem fürs internet, also apps installieren, daten hochladen, runterladen, verwalten etc. is schon in v.3 also der dritte "kernel"
 
Hi,

stimmt, die gab's ja auch noch. Weiß jemand, ob und inwiefern das in diesem Fall sicherheitstechnisch einen Unterschied zur Methode über eval macht?

LG

Sicherheitstechnisch "scheinen" die call_user_func Funktionen besser durchdacht zu sein als eval, allerdings kenne ich mich mit den PHP Internas dafür nicht gut genug aus.
Allerdings sind die call_user_func Funktionen um einiges performanter als eval() da kein Overhead erzeugt wird.
Siehe auch die Benchmarks in den Kommentaren zu [phpf]call_user_func[/phpf].
 
Spielt Sicherheit denn überhaupt eine Rolle wenn er eine Console für sein System macht?

Es hindert einen ja nicht function eval, böse code usw einzutippen. Ich geht mal davon aus das das System nur zu Testzwecken oder in eingeschränktem Rahmen erreichbar ist. Sonst währs ein wenig leichtsinnig sowas offen darzulegen ,)
 
jop ist momentan nur local und später wirds nur mit Passwort erreichbar sein.

aja, wie lösche ich denn einen wert aus einem array?
 
Spielt Sicherheit denn überhaupt eine Rolle wenn er eine Console für sein System macht?

Es hindert einen ja nicht function eval, böse code usw einzutippen. Ich geht mal davon aus das das System nur zu Testzwecken oder in eingeschränktem Rahmen erreichbar ist. Sonst währs ein wenig leichtsinnig sowas offen darzulegen ,)

[phpf]eval[/phpf] ist von [phpf]call_user_func[/phpf] ausgeschlossen.Genauso wie: array(), echo(), empty(), exit(), isset(), list(), print() und unset().

Siehe auch: Pseudo Typen: Callback

aja, wie lösche ich denn einen wert aus einem array?

Entweder mit [phpf]unset[/phpf] oder einfach den Wert auf null setzen.
 
Zurück