2012-07-16 110 views
1

我有2個codeigniter安裝在同一臺服務器上運行。兩個CodeIgniter應用程序之間的會話共享

所述第一應用程序是: 本地主機/ AA/index.php的

第二應用是: 本地主機/ AA /發票/ index.php的

第二應用程序是在所述第一應用程序的文件夾。在現場環境中,它們將位於同一個域中。我試圖讓一個單一的登錄工作 - 所以,如果我有一個應用程序中設置的用戶數據,我應該能夠在發票文件夾中驗證它。

有沒有共享會話的方法。

由於文件夾將始終位於同一個域中,因此我願意使用ci庫之外的會話(僅限於php)。

編輯: 他們顯示相同的會話ID時,他們沒有任何數據。當我在一個應用程序中添加一些變量時,另一個變得不同步。

我也有被存儲在數據庫中的會話(包括應用程序共享同一個數據庫。)

請建議。

謝謝! :)

+0

不知笨,但看是否存在指定的Cookie路徑的設定,如果存在將cookie路徑設置爲'/ aa /'(第一個應用程序的文件夾,不含'localhost'部分)。還要看看是否有會話目錄,並將它(在第二個應用程序中)設置爲第一個應用程序會話目錄。 – 2012-07-16 11:03:07

回答

7

由於某種原因,Codeigniter會自動執行會話實現,而不是本地PHP會話。

http://codeigniter.com/user_guide/libraries/sessions.html

你得到使用的選擇:(?不理想,小的存儲容量,在cookie中的敏感數據)

  1. 的cookie存儲。
  2. 數據庫會話(持續使用會話ID cookie)。
  3. 覆蓋,並推出自己的(使用本地PHP會話!)

顯然,你需要確保你的會話標識符配置正確,那麼這兩個應用程序可以從同一個會話的數據讀取。如果使用數據庫實現,則需要確保兩個應用程序都可以訪問同一個數據庫。

要增加複雜性,如果您選擇加密會話,加密類使用的鹽在兩個應用程序中也需要相同,因此任何一個都能夠解密共享會話數據。

+0

您需要考慮的一件事是如果一個應用程序在另一個應用程序不應該清除會話時。我個人會選擇選項#3,並滾動自己的數據庫表來管理它。 – gorelative 2012-07-16 13:29:35

+1

爲會話數據使用數據庫(取決於個別應用程序用例)是一個性能殺手。我在高流量,多服務器設置中親自使用了原生php會話,沒有任何問題。爲什麼重新發明輪子?無可否認,這超出了原始問題的範圍。我不再使用Codeigniter的原因之一。 – rbaker86 2012-07-16 13:52:58

+0

PHP會話正在兩個應用程序中傳播,將朝着這個方向發展。謝謝! :) – DMin 2012-07-17 10:16:51

-2

如果您將代碼移到同一臺服務器上,則默認情況下兩個會話都將開始共享。

+0

他已經在同一臺服務器上運行了兩個應用程序。 – davidethell 2012-07-16 11:35:10

0

如果我可以...... 我注意到那些不切實際的設計問題並不符合正常慣例應該爲長期根深蒂固的問題提供基礎......您應該問自己它是當我們知道它們是2個不同的版本之間共享會話數據時,真的有必要/可建議,因爲它們以不同的方式做事... 我只能說,無論你做什麼......這種設計缺陷應該讓你的建築變得脆弱,遲早你必須傾倒它。

PLZ讓如果以後你發現,否則我知道..

+0

:)我有點樂觀。它會有一系列自己的問題,但基本上我們只是將自定義應用程序與現有的CI項目集成在一起,而不是理想的情況,但是使其工作起來。 – DMin 2012-07-17 10:15:18

0

如果安裝使用相同的加密密鑰相同的服務器,默認情況下的代碼,這兩個安裝將共享會話。事實上,我發現當我複製一個codeigniter安裝另一個客戶端,但在同一臺服務器上。我擔心這是一個錯誤。

0
$config['encryption_key'] = 'epitome'; 

encryption_key配置名稱在兩個應用程序文件夾中都是相同的。

路徑改變笨的encryption_keyapplication/config/config.php行號228

1
$config['sess_cookie_name'] = 'myvalue'; 

在config.php文件,你可以設置兩個CI應用程序相同的值,以「文件」會話驅動程序

CI_Session Object 

( [用戶數據] =>數組 ( [__ci_last_regenerate] => 1490351129 [等級] => 1 [用戶] => 103 [全名] =>魯火山口 )

[_driver:protected] => files 
[_config:protected] => Array 
    (
     [cookie_lifetime] => 600 
     [cookie_name] => MyHiddenValue 
     [cookie_path] =>/
     [cookie_domain] => 
     [cookie_secure] => 
     [expiration] => 600 
     [match_ip] => 
     [save_path] => /tmp 
    ) 

相關問題