2009-06-03 38 views
5

我正在用C#编写一个Web服务器,我正在尝试添加对PHP的支持。我主要工作,除了我不知道如何将GET和POST数据传递给PHP可执行文件时,我将文件传递给它。我一直在使用GET进行测试,因为我没有得到在服务器上处理的POST请求,并且我有通过分隔传递的参数字符串,但我不知道如何将信息提供给php分析器。一些提示将不胜感激。如何将GET和POST数据传递给php可执行文件?

回答

5

对于GET解释: 简单的方法(我发现):

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

较硬的一种方法(通过PHP,CGI和Windows的命令行)会:

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 

我假设会有一种方法来设置环境变量通过C#/ .net。 php-cgi.exe完成后,环境变量将不会被设置。在http://www.ietf.org/rfc/rfc3875.txt你可以设置CGI环境变量(和CGI一般)

更多信息。也可能是PHP的$ _SERVER变量文档。在PHP.net的PHP文档中也可以将PHP作为CGI运行。

1

你熟悉CGI?这通常是Web服务器如何执行任意外部程序。

当然,还有更现代的替代CGI,但(几乎)所有的web服务器和外部程序今天将支持CGI。

+0

您的链接似乎已损坏。 – starbeamrainbowlabs 2013-07-25 14:30:19

1

如果您在bash或类似的外壳,试试这个:QUERY_STRING="fruitKind=apple&basketId=1000" php -q foo.php

+0

c#中的Web服务器==没有可用的bash:precondition(不使用单声道) – jrharshath 2009-06-03 04:27:09

-1

你有没有考虑将GET/POST数据作为STDIN传送给PHP可执行文件?即

系统( “回声” .GETOrPOSTData “> foobar.php”。);

+0

你知道这是否工作?当然? – jrharshath 2009-06-03 04:27:40

相关问题