2011-09-12 28 views
1

我試圖從在單獨的PHP腳本中創建的會話實例化CGI :: Session對象;然而,當我使用Dumper()對象時,我發現_CLAIMED_ID會話id(與PHP的session_id()匹配)與_DATA成員中存儲的_SESS_ID(或其他)不同。更重要的是,_DATA成員沒有我在PHP中註冊的會話變量的任何Perl的CGI :: Session似乎沒有找到現有的會話(來自PHP)

不過!當我使用PHP :: Session(並將相同的sess id傳遞給它的構造函數)時,THIS對象的確找到了有問題的會話變量。

理想情況下,我想使用CGI :: Session,因爲它看起來更健壯,而PHP :: Session似乎更具特定任務,所以有人可能會建議我哪裏出錯了CGI ::會議? (我應該創建一個PHP :: Session,然後嘗試將它傳遞給CGI :: Session?)

+2

CGI:Session實現與PHP不同的會話。這些文件可能會像PHP一樣進入esame目錄,但它們不兼容。 Perl使用Storable或FreezeThaw進行序列化,而PHP使用它自己的格式的serialize()。 –

回答

5

PHP::Session被設計爲與PHP中創建的會話進行互操作。 CGI::Session被設計成只有Perl的解決方案。 CGI :: Session確實提供了多個後端實現,所以理論上有人可以爲CGI :: Session編寫驅動程序,序列化程序和id模塊,以便與PHP會話兼容。儘管如此,似乎還沒有人做到這一點。