PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Problem mit system! (https://www.php-resource.de/forum/php-developer-forum/93731-problem-mit-system.html)

PHPler 10-09-2008 22:33

Problem mit system!
 
Hallo!

Ich habe da ein kleines Problemchen mit system(). Und zwar:
PHP-Code:

system("\"C:\\programm.exe\" -param [url]http://php-resource.de[/url]"); 

funktioniert ganz gut. Nun muss ich den Parameterwert von param aufgrund einiger Sonderzeichen aber in "" setzen:
PHP-Code:

system("\"C:\\programm.exe\" -param \"http://php-resource.de/forum/forumdisplay.php?s=&forumid=3\""); 

Leider wird hier, sobald der Wert in "" ist, die ganze Kommandozeile nicht mehr ausgeführt.

Weis jemand Rat?

Merci

ModestLife 10-09-2008 23:33

Guck dir mal escapeshellarg() an.

PHPler 11-09-2008 00:21

Muss ich das auf den gesamten Command anwenden oder nur auf den Parameter? Bislang tut sich da gar nix mit...

Oder ich sags mal so: Es sind ? und & die das ganze stören. Im oberen Beispiel wird sonst einfach nur:

http://php-resource.de/forum/forumdisplay.php?s=

aufgerufen, was natürlich nicht der Sinn der Sache ist. urlencode/rawurlencode machen da auch nichts. Hmmm

PHP-Desaster 11-09-2008 09:28

Zitat:

Muss ich das auf den gesamten Command anwenden oder nur auf den Parameter?
Naja, was willst du denn escapen? Zweiteres natürlich.

PHPler 11-09-2008 11:12

Ja war ne blöde Frage sry. Das löst aber immernoch nicht das Problem, dass die URL nach & abgebrochen wird. Also entweder bricht die URL da ab, oder läuft mit escapeshellarg() gar nicht.

jahlives 11-09-2008 13:17

imho brauchst du escapeshellcmd() dann werden ? und & escaped. Bei escapeshellarg() werden die unescaped ausgegeben

jahlives 11-09-2008 13:22

Habe es hier mal zum Test hingestellt http://tobisworld.ch/misc/test/test.php

PHPler 11-09-2008 13:52

Da liegt wahrscheinlich der Hund begraben. Bei escapeshellcmd werden bei mir keine Sonderzeichen escaped, sondern entfernt, warum auch immer!?

Ein manuelles Escape bringt auch nichts:
PHP-Code:

$url parse_url($url);
        
        
$url $url['scheme'].'://'.$url['host'].$url['path'].'\\\?'.str_replace('&'"\\\&"$url['query']); 

Die URL wird trotzdem beim & abgebrochen.

jahlives 11-09-2008 14:01

Schon probiert beim Command String ' statt " zu verwenden? Der einzige Unterschied zwischen meinem Code und deinem sind die Anführungszeichen. Und die User Notes bei php.net erwähnen Probleme bei gewissen Zeichen und ".

Gruss

tobi
EDIT:

Gerade mal meinen Bsp Code angepasst. Scheint so zu sein dass ? und & in " nicht ersetzt werden http://tobisworld.ch/misc/test/test.php


PHPler 11-09-2008 14:15

Du meinst so?
PHP-Code:

system("'C:\\programm.exe' -param 'http://php-resource.de/forum/forumdisplay.php\\?s=\\&forumid=3'"); 

Kommt ebenfalls nur ne abgebrochene URL bei raus.

Hab bei den User Nodes schon mitbekommen dass es da wohl probleme geben soll, aber so gut ist mein Englisch auch nicht um da alles zu verstehen... :(

jahlives 11-09-2008 14:19

Zitat:

Du meinst so?
Nein, so
PHP-Code:

escapeshellcmd('C:\\programm.exe -param http://php-resource.de/forum/forumdisplay.php?s=&forumid=3'); 

Gruss

tobi

PHPler 11-09-2008 14:25

Aso, ähm, funktioniert überhaupt nicht. Die ausgabe sieht dann so aus:
PHP-Code:

Cprogramm.exe -param htp://php-resource.de/forum/forumdisplay.php s= forumid=3 

Edit: Blödsinn, programm.exe wird erst gar nicht gestartet...

jahlives 11-09-2008 14:40

Also bei mir schaut das in ' und ' so aus
Zitat:

C:\\programm.exe -param http://php-resource.de/forum/forumdisplay.php\?s=\&forumid=3

PHPler 11-09-2008 14:46

So sollte es ja eigentlich auch sein. Kann da irgend ne Einstellung iner php.ini für verantwortlich sein dass sich escapeshellcmd() so verhält? save_mode ist jedenfalls auf off bei mir mh

jahlives 12-09-2008 13:11

Hast du diesen String "hardcodiert" oder übernimmst du eine Usereingabe (GET oder POST)? Wenn es aus einer Usereingabe kommt könnte es sein, dass Magic Quotes seine Finger mit im Spiel hat :dontknow:


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:59 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG