2013-07-26 76 views
0

我的用戶在site_url.com的CMS上登錄,但是我現在正在CMS的子域m.site_url.com之外開發移動版本的站點,並希望會話與會話同步CMS。分享會話到子域 - PHP

我已經包含在CMS」的所有功能像這樣的文件:

<?php include('/home/flyeurov/public_html/core/codon.config.php'); 

子站點m.site_url.com位於/public_html/mobile目錄。 /mobile的內部爲index.php,根據用戶的狀態(是否登錄)顯示儀表盤或登錄表單的觸發器。

這是工作,我能夠登錄並查看該信息中心,但只有當我訪問的直接路徑,例如site_url.com/mobile/index.php。如果我登錄,並且訪問此路徑,它將帶我到達crew_center.php - 儀表板。

這時候我在m.site_url.com訪問子域不會發生。即使在我登錄時,我也會看到login.php頁面。

這裏是index.php

<?php include('/home/flyeurov/public_html/core/codon.config.php'); 

session_set_cookie_params(0, '/', '.site_url.com'); 

if(Auth::LoggedIn()) 
{ 
    header("Location: crew_center.php"); 
} 
else 
{ 
    header("Location: login.php"); 
} 

?> 

因此我可以想像,這是下降到一個會話的問題,但我怎麼能與m子域共享CMS」會議?

+0

有作爲多點會話沒有這樣的事情...... – pattyd

+0

是否有其他方法可以讓我嘗試解決這個問題呢? – user2442178

+1

http://stackoverflow.com/questions/644920/allow-php-sessions-to-carry-over-to-subdomains – Tarek

回答

0

嘗試設置cookie!

當用戶登錄到他們的帳戶sitea.com,然後設置一個cookie。

setcookie("TestCookie", "COOKIE-VALUE", time()+3600, "/", "siteb.com"); 

這將設置一個cookie包含在它這個信息:

Name: TestCookie 
Value: COOKIE-VALUE 
Expiration: One Hour 
Cookie directory:/
Domain: siteb.com 

域被設置爲siteb.com使網站B可以讀取包含在Cookie中的值。

現在你要做的就是閱讀siteb.com餅乾!

我不推薦使用cookie來保存密碼或銀行信息,但是,這是我認爲可能的解決方案的唯一辦法。

我希望這可以幫助,讓我知道如果你需要進一步的幫助。

-1

你必須告訴服務器保持會話域而不是子域。 它可以通過實現*的ini_set(「session.cookie_domain」,「site_url.com」); *

這將保持會話的域,並且在同一會話將被共享到所有的子域。

訪問http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-domain

+1

我不建議這個問題改變INI設置。 – pattyd

+1

php的默認ini設置將在應用程序中被覆蓋。它不會影響同一Web服務器中託管的其他應用程序的設置。 –

0

您無法通過跨域會話ID,它們不是用來工作的方式(出於安全原因)。雖然你可以做我過去所做的和在序列化格式的會話數據存儲在任何一個cookie,或者作爲一種形式中的POST變量,或作爲編碼序列化格式作爲URL的一部分的base64。

<input type="hidden" name="session_data" value="<?php echo(base64_encode(serialize($_SESSION))); ?>"/> 

<a href="http://sub.domain.com/?session_data=<?php echo(base64_encode(serialize($_SESSION))); ?>">Go Here</>