CodeIgniter - Удаляются ли Facebook данные моего пользовательского сеанса?

StackOverflow https://stackoverflow.com/questions/1610231

  •  05-07-2019
  •  | 
  •  

Вопрос

Мне интересно, есть ли способ сбросить все значения

$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');
}

Таким образом, происходит перенаправление, и у меня есть очень простая настройка в разделе preferences / index:

    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.Я неправильно это настроил?Есть ли способ сбросить все значения массива сеанса, чтобы увидеть, что происходит?Любая помощь была бы просто замечательной.

Обновить

Я запустил var_dump ($ this-> session-> userdata) на каждом веб-сайте raw и через Facebook.

На веб-сайте он предоставляет все установленные значения в виде массива, содержащего 5 значений (session_id, IP, User_agent, last_activity и uid).

Однако в Facebook Chrome отображаются только 4 значения, установленные CodeIgniter.Я слышал, что файлы 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

Поэтому я обратился к использованию базы данных для хранения информации о сеансе вместо файлов cookie, думая, что FB либо удаляет их, либо сталкивается с ними.В настоящее время у меня настроено приложение на

  1. Установите $user_id = 1234
  2. $this->сессия-> set_userdata('uid', $user_id)
  3. Перенаправление на новую страницу
  4. Var_dump вся возможная информация

Что происходит в базе данных, так это:Записи в базе данных http://nikolausjj.facebook .joyent.us/Picture2.png

Таким образом, он создает одну хорошую запись с данными пользователя, а затем сразу после перенаправления создает новый сеанс, не распознав предыдущий.Кто-нибудь может объяснить, где CI framework проверяет, существует ли у него предыдущий сеанс?В руководстве пользователя это объясняется в основном как "волшебство".

Это было полезно?

Решение

Вы можете использовать var_dump() для вывода сеанса.Что - то вроде этого

var_dump($this->session);

Тот самый set_userdata звонок выглядит нормально.Вы уверены $user_id установлен.Потому что эхо - это казнь серли , но uid не задан или имеет значение пустой строки.

Попробуйте заменить echo на

echo ':test_'.$this->session->userdata('uid').'_test:';

Другая информация, полезная для ответа

  • Каким браузером вы пользуетесь?
  • У вас есть знак подчеркивания _ в вашем доменном имени?
  • Используете ли вы сеансы CI или какую-то оболочку для собственных PHPsessions
  • Является ли значение для uid также теряется / не устанавливается, когда вы закомментируете перенаправление?

Другие предложения:

  • попробуй redirect('/preferences/index/', 'refresh'); вместо того , чтобы location
  • Я не знаком с разработкой facebook, но знаком /preferences/index под вашим контролем?Если да, попробуйте удалить (если присутствует) $this->load->library(‘session’) и вместо этого загрузите его в autoload.php.
  • попробуйте измениться $config[‘sess_match_ip’] к `ЛОЖНОМУ
  • попробуйте установить $config[‘sess_encrypt_cookie’] к ЛОЖНОМУ
  • попробуйте заменить использование CI-Session на Собственная сессия CI
  • Является ли UID разумной информацией, если не хранить ее в файле cookie.Если это имеет значение, если это можно подделать, не делайте этого.

Другие советы

Я не решил, как передавать переменные сеанса с одной страницы на другую через Facebook.Мое решение состояло в том, чтобы просто снова вызывать Facebook API для UID пользователя на каждой странице.Не очень хорошее программирование, но у меня оно работает нормально.:-/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top