2012-03-28 117 views
0

进出口工作作为学校项目一个简单的C++ HTTP服务器上,我想补充的是PHP的支持。 Post和Get方法不应该是一个问题,但我坚持一个cookie。我搜索了很长时间,并且找不到,php如何处理cookie,它为http服务器提供输出(如Apache),或者它如何在全局中运行。 任何想法如何,我可以打印验证码:简单的C++ Web服务器

<?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集团 Zend引擎V2.3.0,版权所有(C)1998-2011 Zend技术

+0

@Justinᚅᚔᚈᚄᚒᚔ起坐,感谢警告 – safarov 2012-03-28 23:01:18

+0

检查本教程[phpcookies(http://www.tizag.com/phpT/phpcookies.php) – safarov 2012-03-28 23:02:08

+0

Dafarov:我想ü不明白我的职务。基本上我想能够获得cookie头代码只是在控制台中运行php脚本,所以我可以通过mu http服务器读取它并发送给用户 – user1299412 2012-03-28 23:33:21

回答

3

PHP得到它的superglobals变量(例如Cookies)来自HTTP服务器本身。在解析客户端请求时,必须将每个键/值对存储在适当的容器中(也许是HTTPRequest类)。

当PHP接口服务器,如Apache做(mod_php),你应该写一个模块。要做到这一点,你将不得不编写自己的API来与模块接口。这意味着你将拥有每个模块(php,python ...),你将有相同的输入/输出接口。

当写这样的API,你应该定义一个简单的方法来传递所有的超全局变量PHP需要服务器。我写我自己的HTTP服务器为同一目的和PHP的文档是有点棘手,对于这点,但你可以从PHP-CGI激励自己:有在Linux/Windows的一个php.exe或者干脆php命令,它可以获取参数,如变量如果我的记忆力不错。无论如何,有几种方法可以将这些参数传递给php,我使用CGI作为我的服务器。

希望能帮到你。

+0

谢谢,可能最有帮助的答案迄今:)我试图覆盖setcookie与回声内,但这是不可能的:/我会寻找更多有关运行CGI参数的信息,但如果你能记得它是如何完成的(请使用哪个参数),请这样做,我会非常感谢:)谢谢 – user1299412 2012-03-29 09:06:19

+0

你应该先看一下Apache与PHP的接口(例如通过SAPI,服务器应用编程接口)。还要看看FastCGI,它做了什么以及它如何用于PHP和Apache之间的通信以及如何在Web服务器中使用它。 – 2012-03-29 11:27:23

+0

查看http://fuzzytolerance.info/cgi-vs-sapi-vs-fastcgi/获取关于这两者的解释以及它们之间差异的列表。 – 2012-03-29 11:28:50

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,但是这基础。

总之,你需要:

  • 发送Set-Cookie头当你的代码中请求设置cookie。
  • 当您读取传入请求时,请查找Cookie标头。
+0

我知道我必须设置一个cookie头,已经准备好了我的代码..但是如何知道当我在终端中运行时要设置什么cookie:“php script.php”和在代码中像是setcookie(“cookie1”,“val1”);它不会将cookie打印到控制台,所以我该如何获取它? – user1299412 2012-03-29 09:00:04