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
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.
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.
Se si è in bash
o una shell simile, provare questo: QUERY_STRING="fruitKind=apple&basketId=1000" php -q foo.php
.
Web server in C# == non disponibile: precondizione (non mono) – jrharshath
Avete considerato il piping dei dati GET/POST come STDIN per l'eseguibile PHP? ovvero
sistema ("echo" .GETOrPOSTData. "> foobar.php");
sai se funziona? di sicuro? – jrharshath
Dovresti riscrivere il modo in cui lo script PHP prende input, cambiandolo da POST/GET a STDIN. – Jason
C'è una spiegazione qui http://stevedev.co.cc/php-curl-method-get-and-post/
Il tuo collegamento sembra essere rotto. – starbeamrainbowlabs