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

时间:2012-03-28 22:47:24

标签: php c++ http

我正在开发一个简单的C ++ HTTP服务器作为学校项目,我想为它添加php支持。 Post和Get方法应该不是问题,但我坚持使用cookies。我google了很长时间,无法找到,php如何处理cookie,它为Apache服务器提供输出,如何在全球范围内工作。 有关如何打印此代码的任何想法:

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

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

谢谢你们

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

php版: PHP 5.3.6-13ubuntu3.2与Suhosin-Patch(cli)(内置:2011年10月13日23:09:42) 版权所有(c)1997-2011 PHP小组 Zend Engine v2.3.0,版权所有(c)1998-2011 Zend Technologies

2 个答案:

答案 0 :(得分:3)

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

当您的服务器与PHP连接时,您应该编写一个类似apache的模块(mod_php)。为此,您必须编写自己的API以与模块连接。这意味着对于您将拥有的每个模块(php,python ...),您将拥有输入/输出的相同界面。

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

希望能帮到你。

答案 1 :(得分:1)

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

这是way more complicated than that,但这是基础知识。

总结一下,您需要:

  • 当您的代码请求设置Cookie时发送Set-Cookie标头。
  • 在您阅读传入请求时查找Cookie标题。