2009-06-03 14 views
5

Piszę serwer WWW w języku C# i próbuję dodać obsługę PHP. Mam go głównie działa, z wyjątkiem nie wiem jak przeszłości danych GET i POST do pliku wykonywalnego PHP, gdy przekazuję plik do niego. Testowałem z GET, ponieważ nie dostałem polecenia POST przetwarzane na serwerze, a ja mam ciąg argumentów, które są przekazywane oddzielone, ale nie wiem jak podawać informacje do parsera php . Niektóre wskazówki będą mile widziane.Jak przekazać dane GET i POST do pliku wykonywalnego php?

Odpowiedz

5

Dla GET: Easy Way (To ja znalazłem):

php-cgi.exe <script-file-name> <parameter1>=<value1> <parameter2>=<value2> [...] <parameterN>=<valueN> 

twardszej Way (przez php-cgi i okien CLI) byłoby :

SET "QUERY_STRING=<parameter1>=<value1>&<parameter2>=<value2>&[...]&<paramterN>=<valueN>" 
SET SCRIPT_NAME=<script-file-name> 
SET REQUEST_METHOD=GET 
SET REDIRECT_STATUS=0 
php-cgi.exe 

Zakładam, że istnieje sposób na ustawienie zmiennej środowiskowej za pomocą C#/.net. Zmienne środowiskowe musiałyby zostać anulowane po ukończeniu php-cgi.exe.

Więcej informacji na temat zmiennych środowiskowych CGI, które można ustawić (i ogólnie CGI) pod adresem http://www.ietf.org/rfc/rfc3875.txt. Może być użyteczna także dokumentacja zmiennej $ _SERVER PHP. Zagadnienia bezpieczeństwa dotyczące uruchamiania PHP jako CGI również w dokumentacji PHP na php.net.

1

Czy znasz CGI? Zwykle w ten sposób serwery WWW wykonują dowolne programy zewnętrzne.

Z pewnością istnieją bardziej nowoczesne alternatywy dla CGI, ale (prawie) każdy serwer WWW i program zewnętrzny będą obsługiwały CGI.

+0

Twój link wygląda na uszkodzony. – starbeamrainbowlabs

1

Jeśli jesteś w bash lub podobnej powłoce, spróbuj tego: QUERY_STRING="fruitKind=apple&basketId=1000" php -q foo.php.

+0

Serwer WWW w C# == brak bash dostępne: warunek wstępny (nie używając mono) – jrharshath

-1

Czy rozważałeś podłączenie danych GET/POST jako STDIN do pliku wykonywalnego PHP? tj.

system ("echo" .GETOrPOSTData. "> foobar.php");

+0

czy wiesz, czy to działa? na pewno? – jrharshath

+0

Musiałbyś przerobić sposób, w jaki skrypt PHP pobiera dane wejściowe, zmieniając je z POST/GET na STDIN. – Jason