Problem mit system!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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

  • #2
    Guck dir mal escapeshellarg() an.
    Mein PHP Blog

    Kommentar


    • #3
      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
      Zuletzt geändert von PHPler; 10.09.2008, 23:26.

      Kommentar


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

        Kommentar


        • #5
          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.

          Kommentar


          • #6
            imho brauchst du escapeshellcmd() dann werden ? und & escaped. Bei escapeshellarg() werden die unescaped ausgegeben
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Habe es hier mal zum Test hingestellt http://tobisworld.ch/misc/test/test.php
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                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.
                Zuletzt geändert von PHPler; 11.09.2008, 12:55.

                Kommentar


                • #9
                  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

                  Zuletzt geändert von jahlives; 11.09.2008, 13:06.
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    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...

                    Kommentar


                    • #11
                      Du meinst so?
                      Nein, so
                      PHP-Code:
                      escapeshellcmd('C:\\programm.exe -param http://php-resource.de/forum/forumdisplay.php?s=&forumid=3'); 
                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        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...
                        Zuletzt geändert von PHPler; 11.09.2008, 13:33.

                        Kommentar


                        • #13
                          Also bei mir schaut das in ' und ' so aus
                          C:\\programm.exe -param http://php-resource.de/forum/forumdisplay.php\?s=\&forumid=3
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            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

                            Kommentar


                            • #15
                              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
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar

                              Lädt...
                              X