【问题标题】:How to pass GET and POST data to the php executable?如何将 GET 和 POST 数据传递给 php 可执行文件?
【发布时间】:2009-06-03 03:50:41
【问题描述】:

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

【问题讨论】:

    标签: php post get webserver


    【解决方案1】:

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

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

    更难的方式(通过 php-cgi 和 windows cli)是:

    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 作为 CGI 运行的安全注意事项也在 php.net 的 PHP 文档中。

    【讨论】:

      【解决方案2】:

      你熟悉CGI吗?这通常是 Web 服务器执行任意外部程序的方式。

      当然有更现代的 CGI 替代方案,但(几乎)今天的每个 Web 服务器和外部程序都将支持 CGI。

      【讨论】:

      • 您的链接似乎已损坏。
      【解决方案3】:

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

      【讨论】:

      • c# 中的 Web 服务器 == 没有可用的 bash:前提条件(不使用单声道)
      【解决方案4】:
      【解决方案5】:

      您是否考虑过将 GET/POST 数据作为 STDIN 传送到 PHP 可执行文件?即

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

      【讨论】:

      • 您必须重写 PHP 脚本获取输入的方式,将其从 POST/GET 更改为 STDIN。
      猜你喜欢
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      相关资源
      最近更新 更多