2011-12-05 84 views
0

我有一個網站登錄系統,我正在啓動一個PHP會話服務器端,並在PHP中創建一個用於恢復PHP會話的cookie,當我稍後再回來時。用cookie登錄iOS網絡服務

我試圖重用我的代碼作爲iOS應用程序的後端,但我很難理解它是如何工作的。

我已經設置了下面的cookie管理器,據我所知這應該發送cookie與我的請求。

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
[cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; 

我不需要從iPhone設置任何cookie,我只是需要確保我對我的PHP文件的請求,讓那些腳本訪問的cookie。

我錯過了什麼?

+0

你有什麼問題?根據您的使用情況,您可能還想將Cookie保存到某處並在應用啓動時重新加載它們。 –

+0

我認爲你是絕對正確的,如果我重新啓動我的應用程序,我會在返回的Cookie列表中獲得不同的PHPSESSID。我只需要記住我的cookie中的用戶ID和散列字符串,並確保在發出請求時可以從我的PHP訪問它們。當我重新啓動應用程序時,我得到一個新的PHPSESSID - 暗示重新啓動實際上並沒有堅持我的cookies。你能否提供一些我可以使用的參考資料或樣本? – Daniel

回答

2

類似的問題已經問過:Persisting Cookies In An iOS Application?

從本質上講,你需要在一些地方保存cookie數據。這可能僅僅是一個文件,使用這樣的事情:

NSFileManager *filemgr = [NSFileManager defaultManager]; 
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithFile:dataFilePath]; 
for (cookie in cookies) { 
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; 
} 

真實世界的場景將決定最佳的方式來處理:

[NSKeyedArchiver archiveRootObject:cookies toFile:dataFilePath];  

在這種情況下,你會喜歡的東西返回cookie數據這一點,但希望上述讓你朝着正確的方向思考。

+0

你好,感謝你回覆David,我確實看到了其他帖子,實際上這不是我想要達到的。我不需要知道任何關於cookies的信息,我所需要做的就是確保我的PHP後端Web服務可以將一些cookie粘貼到我的身上,並且這些cookie在我下一次向Web服務請求時持續存在。這是爲了確保我可以在服務器上使用自定義註冊/登錄腳本進行登錄,並在cookie的幫助下堅持登錄。所以保存cookie沒有任何價值。我實際上需要確保cookies的有效期限已設定爲 – Daniel

+0

@Daniel因此,如果我瞭解這項權利,您並不擔心在關閉並重新啓動應用程序時堅持Cookie。你所處理的是讓cookies工作。正確? –

+0

差不多,我仍然需要應用程序來維護Web服務爲我保存了一個cookie的事實,爲此我需要確保cookie將來有一個正確的失效日期,否則是一個會話只有cookie和應用程序正在到後臺結束了會議。 – Daniel