支持php的简单C++web服务器


Simple C++ web server with php support

我作为一个学校项目在一个简单的C++HTTP服务器上工作,我想为它添加php支持。Post和Get方法应该不是问题,但我被cookie卡住了。我在谷歌上搜索了很长时间,找不到php是如何处理cookie的,它在哪里为Apache等http服务器提供输出,或者它在全局中是如何工作的。有什么想法我可以打印这个代码:

<?php
setcookie("cookie[three]","cookiethree");
?>

控制台,以便我的服务器可以读取它,并在解析(?)后将其发送到客户端?

谢谢各位

编辑:这是一个非常接近我需要的示例,但当我执行脚本时,它显示空数组。。http://php.net/manual/en/function.headers-list.php

php版本:PHP 5.3.6-13ubuntu3.2与Suhosin补丁(cli)(构建时间:2011年10月13日23:09:42)版权所有(c)1997-2011 PHP GroupZend Engine v2.3.0,版权所有(c)1998-2011 Zend Technologies

PHP从HTTP服务器本身获取其超全局变量(如Cookies)。解析客户端请求时,必须将每个键/值对存储在适当的容器(可能是HTTPRequest类)中。

当您的服务器与PHP接口时,您应该像apache那样编写一个模块(mod_php)。要做到这一点,您必须编写自己的API来与模块接口。这意味着,对于您将拥有的每个模块(php、python…),您的输入/输出都将具有相同的接口。

在编写这样一个API时,您应该定义一种简单的方法来从服务器传递PHP所需的所有超全局变量。出于同样的目的,我编写了自己的HTTP服务器,PHP的文档在这一点上有点棘手,但你可以从PHP-CGI中得到启发:在Linux/Windows上有一个php.exe或简单的php命令,如果我的内存很好,它可以接受变量等参数。无论如何,有几种方法可以将这些参数传递给php,我使用CGI作为服务器。

希望这对你有帮助。

cookie的工作方式是服务器发送一个Set-Cookie头:

HTTP/1.0 200 OK
Set-Cookie: myCookieName=myCookieKey
Set-Cookie: anotherCookie=anotherValue
// other headers and probably content

然后,一个兼容的HTTP客户端会在随后的请求中发回它:

GET /some/path HTTP/1.0
Cookie: myCookieName=myCookieKey; anotherCookie=anotherValue

这比这复杂得多,但这是最基本的。

总之,您需要:

  • 当您的代码请求设置cookie时,发送一个Set-Cookie标头
  • 在读取传入请求时,请查找Cookie标头