2012-03-28 115 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