首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支持cookie的C# PHP-CGI

支持cookie的C# PHP-CGI
EN

Stack Overflow用户
提问于 2016-08-10 23:05:33
回答 1查看 150关注 0票数 2

我正在尝试创建一个WebServer和它的工作与超文本标记语言,图片...但是我想实现PHP,并且我有一个可以工作的PHP-CGI实现,但是它不能处理像'file_get_contents‘和cookies这样的东西。我想知道有没有办法解决这个问题?

代码语言:javascript
复制
private string ProcessPHP(string phpPath, CookieCollection cookies)
{
    Process CGI = new Process();
    CGI.StartInfo.FileName = "php\\php.exe";
    CGI.StartInfo.CreateNoWindow = true;
    CGI.StartInfo.Arguments = "-q \"" + phpPath + "\"";
    CGI.StartInfo.RedirectStandardOutput = true;
    CGI.StartInfo.UseShellExecute = false;
    CGI.Start();

    string OutputText = CGI.StandardOutput.ReadToEnd();

    CGI.WaitForExit();
    CGI.Close();

    return OutputText;
}

我知道我不会对CookieCollection做任何事情,但我想知道如何使用它。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-04-07 17:49:21

这是一个老生常谈的问题,但目前windows版本的php附带了一个单独的php-cgi.exe。这是您必须运行的可执行文件。

使用CGI,脚本信息和请求头是通过环境变量发送的,例如:

代码语言:javascript
复制
CGI.StartInfo.info.EnvironmentVariables["SCRIPT_FILENAME"] = @"c:/wwwroot/index.php";

有关更详细的示例,请参阅https://en.wikipedia.org/wiki/Common_Gateway_Interface

HTTP标头(如cookies )也通过环境变量发送。它们以'HTTP_'为前缀,破折号转换为下划线:

代码语言:javascript
复制
CGI.StartInfo.info.EnvironmentVariables["HTTP_COOKIE"] = ...

如果您的请求体包含数据,则必须设置CONTENT_LENGTH环境变量,并在启动进程后将数据写入CGI.StandardInput

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38877166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档