2009-06-03 2 views
5

Sto scrivendo un server Web in C# e sto cercando di aggiungere il supporto per PHP. Ce l'ho quasi sempre, tranne che non so come passare i dati GET e POST all'eseguibile PHP quando passo il file ad esso. Ho provato con GET poiché non ho ottenuto la gestione delle richieste POST sul server, e ho la stringa degli argomenti che vengono passati separati, ma non so come fornire le informazioni al parser php . Alcuni consigli sarebbero apprezzati.Come passare i dati GET e POST all'eseguibile di php?

risposta

5

Per GET: Il modo più semplice (che ho trovato):

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

La Via Harder (tramite php-cgi e finestre CLI) sarebbe :

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 

mi piacerebbe pensare ci sarebbe un modo per impostare variabile d'ambiente via C#/Net.. Le variabili di ambiente dovrebbero essere disinserite al termine di php-cgi.exe.

Ulteriori informazioni per le variabili di ambiente CGI che è possibile impostare (e CGI in generale) a http://www.ietf.org/rfc/rfc3875.txt. Potrebbe anche essere utile la documentazione della variabile $ _SERVER di PHP. Considerazioni sulla sicurezza per l'esecuzione di PHP come CGI anche nella documentazione PHP su php.net.

1

Hai familiarità con CGI? Questo è normalmente il modo in cui i server Web eseguiranno programmi esterni arbitrari.

Esistono sicuramente alternative più moderne a CGI, ma (quasi) tutti i server Web e i programmi esterni oggi supporteranno CGI.

+0

Il tuo collegamento sembra essere rotto. – starbeamrainbowlabs

1

Se si è in bash o una shell simile, provare questo: QUERY_STRING="fruitKind=apple&basketId=1000" php -q foo.php.

+0

Web server in C# == non disponibile: precondizione (non mono) – jrharshath

-1

Avete considerato il piping dei dati GET/POST come STDIN per l'eseguibile PHP? ovvero

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

+0

sai se funziona? di sicuro? – jrharshath

+0

Dovresti riscrivere il modo in cui lo script PHP prende input, cambiandolo da POST/GET a STDIN. – Jason