Мне интересно, есть ли способ сбросить все значения
$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 ($ this-> session-> userdata) на каждом необработанном веб-сайте и через Facebook.
На веб-сайте он предоставляет все установленные значения в массиве, содержащем 5 значений (session_id, IP, User_agent, last_activity и uid).
Однако в Chrome Facebook отображаются только 4 значения, установленные CodeIgniter. Я слышал, что куки могут быть только 4 КБ, и шифрование может быть проблемой. Может ли FB заполнять куки своими собственными зашифрованными (читай: большими) данными?
ОБНОВЛЕНИЕ 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 удалит куки, я полагаю.
ОБНОВЛЕНИЕ 3
Поэтому я перешел к использованию БД для хранения информации о сеансе вместо файлов cookie, думая, что FB либо удаляет их, либо сталкивается с ними. В настоящее время у меня установлено приложение до
- Установить $ user_id = 1234
- $ this-> session-> set_userdata ('uid', $ user_id)
- Перенаправление на новую страницу
- Var_dump вся возможная информация
Что происходит в БД:
БД записей http://nikolausjj.facebook.joyent.us/Picture2.png
Таким образом, он создает одну хорошую запись с пользовательскими данными, а затем сразу же после перенаправления создает новый сеанс без распознавания предыдущего. Может кто-нибудь объяснить, где проверяет инфраструктура CI, чтобы увидеть, существует ли предыдущая сессия? Руководство пользователя объясняет это как «волшебство».