我不知道是否有一種方法來轉儲所有的CodeIgniter - 我的自定義會話數據被Facebook剝離了嗎?
$this->session->userdata()
值的,所以我可以解決?
我在Facebook內部工作,並有一個登錄頁面,一旦成功,我想傳遞當前用戶的UID,我認爲這將工作得很好。
我目前擁有的UID設置如下:
require_once 'facebook.php';
$appapikey = 'XXXX';
$appsecret = 'XXXX';
$facebook = new Facebook($appapikey, $appsecret);
$user_id = $facebook->require_login();
$this->db->like('uid', $user_id);
$this->db->from('users');
$has_signed_up = $this->db->count_all_results();
if ($has_signed_up == 0) {
redirect('/setup/signup/', 'location');
}
else {
$this->session->set_userdata('uid', $user_id);
redirect('/preferences/index/', 'location');
}
所以重定向發生時,我在首選項/指數在有一個非常簡單的設置:
echo "this is the preferences form <br />";
echo $this->session->userdata('uid');
echo $this->session->userdata('session_id');
而結果是不可思議的:
this is the preferences form
858f500e167e359edc1942a96f3bac35
因此,它完全跳過包含uid的中間回聲。我沒有正確設置?有沒有辦法轉儲會話數組的所有值來查看正在通過的內容?任何幫助都會很棒。
UPDATE
我已經運行的var_dump($這 - >會話級>用戶數據)在每個原始網站,並通過Facebook。
在網站上公開了包含5個值(session_id,IP,User_agent,last_activity和uid)的數組中的所有設置值。
但是在Facebook Chrome中,它只顯示CodeIgniter設置的4個值。我聽說cookie只能是4k,而且加密可能會成爲問題。 FB可以使用自己的加密(讀取:更大)數據填充cookie嗎?
更新2
當我註釋掉重定向,只是有:
else {
$this->session->set_userdata('uid', $user_id);
echo ':test_'.$this->session->userdata('uid').'_test:';
//redirect('/preferences/index/', 'location');
}
它忠實地返回:test_1234_test:在Facebook中。所以在重定向期間,它會丟失數組的這部分(但不是整個數組)。
它可能只是在重定向頁面上創建一個新的會話?所以這就是爲什麼它只有四個「股票」變量?如果是這種情況,我需要研究它是如何創建會話的,以及Facebook是否會清除cookie。
更新3
所以我轉而使用DB,而不是存儲cookie的會話信息,想FB要麼剝奪他們或與他們發生碰撞。我公司目前已在應用程序設置爲
- 設置$ USER_ID = 1234
- $這個 - >會話級> set_userdata( 'UID',$ USER_ID)
- 重定向到新的頁面
- 的var_dump在DB會發生什麼情況的所有可能的信息
是這樣的: DB records http://nikolausjj.facebook.joyent.us/Picture2.png
所以它創建於用戶數據記錄良好,然後在重定向後立即創建新會話而不識別先前的會話。有人可以解釋CI框架在哪裏檢查是否存在先前的會話?用戶手冊基本上將其解釋爲「魔術」。
所以我已經做到了。當我訪問Facebook以外的頁面時,它顯示了完整的期望數組:array(6){[「session_id」] => string(32)「3ee0c3caea3bf41153ad03f3483c05e5」[「ip_address」] => string(10)「10.19.32.6 「[」user_agent「] => string(50)」Mozilla/5.0(Macintosh; U; Intel Mac OS X 10.5; en「[」last_activity「] => string(10)」1256249601「[」key「] =>但是當我通過Facebook訪問相同的頁面時,它只顯示CI自己設置的4個值(sessid,4個字符) IP,usragent和lastactivity)任何人都知道這些設置是不同的嗎?存儲? – 2009-10-22 22:16:42
我在OS X上同時使用Safari 4.03和FF 3.5.3,所以我只需設置$ user_id = 1234就可以了。當我評論重定向,但不會從會話數組中返回: -/ – 2009-10-22 22:39:08
而且我正在使用一個小時前股票下載的CI會話(所以我沒有把TOO弄得太多) 。沒有_在th e域名。我也做了圍繞重定向頁面上的回聲的測試,它出來了:test__test: – 2009-10-22 22:40:46