我不知道是否有一种方法来转储所有的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