2009-06-03 13 views
5

Estoy escribiendo un servidor web en C# y estoy tratando de agregar soporte para PHP. Lo tengo funcionando principalmente, excepto que no sé cómo pasar los datos GET y POST al ejecutable de PHP cuando le paso el archivo. He estado probando con GET ya que no he recibido solicitudes de POST en el servidor, y tengo la cadena de argumentos que se pasa por separado, pero no sé cómo pasar la información al analizador de php . Algunos consejos serían apreciados.Cómo pasar datos GET y POST al ejecutable php?

Respuesta

5

Para Obtener: la manera fácil (que he encontrado):

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

El Camino Más difícil (a través de php-cgi y ventanas CLI) sería :

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 

Asumiría que habría una manera de establecer la variable de entorno a través de C# /. Net. Las variables de entorno tendrían que ser desarmadas una vez que se complete php-cgi.exe.

Más información para variables de entorno CGI que puede establecer (y CGI en general) en http://www.ietf.org/rfc/rfc3875.txt. También podría ser de utilidad la documentación variable $ _SERVER de PHP. Consideraciones de seguridad para ejecutar PHP como CGI también en la documentación de PHP en php.net.

1

¿Está familiarizado con CGI? Normalmente, así es como los servidores web ejecutarán programas externos arbitrarios.

Sin duda hay alternativas más modernas a CGI, pero (casi) todos los servidores web y programas externos de hoy admitirán CGI.

+0

Parece que tu enlace no funciona. – starbeamrainbowlabs

1

Si está en bash o un shell similar, intente esto: QUERY_STRING="fruitKind=apple&basketId=1000" php -q foo.php.

+0

Servidor web en C# == sin bash disponible: precondición (no usa mono) – jrharshath

-1

¿Ha considerado canalizar los datos GET/POST como STDIN al ejecutable de PHP? es decir,

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

+0

¿sabes si esto funciona? ¿sin lugar a duda? – jrharshath

+0

Tendría que volver a escribir cómo el script PHP toma la entrada, cambiándola de POST/GET a STDIN. – Jason