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
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.
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.
Jeśli jesteś w bash
lub podobnej powłoce, spróbuj tego: QUERY_STRING="fruitKind=apple&basketId=1000" php -q foo.php
.
Serwer WWW w C# == brak bash dostępne: warunek wstępny (nie używając mono) – jrharshath
Czy rozważałeś podłączenie danych GET/POST jako STDIN do pliku wykonywalnego PHP? tj.
system ("echo" .GETOrPOSTData. "> foobar.php");
czy wiesz, czy to działa? na pewno? – jrharshath
Musiałbyś przerobić sposób, w jaki skrypt PHP pobiera dane wejściowe, zmieniając je z POST/GET na STDIN. – Jason
Jest wyjaśnienie tu http://stevedev.co.cc/php-curl-method-get-and-post/
Twój link wygląda na uszkodzony. – starbeamrainbowlabs