CodeIgniter - Mes données de session personnalisées sont-elles supprimées par Facebook?

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

  •  05-07-2019
  •  | 
  •  

Question

Je me demande s'il existe un moyen de vider toutes les valeurs de

$this->session->userdata() 

pour que je puisse résoudre le problème?

Je travaille au sein de Facebook et j'ai une page de connexion. Une fois que c'est réussi, je souhaite faire circuler l'UID de l'utilisateur actuel. Je pensais que cela fonctionnerait bien.

L'UID est actuellement défini comme suit:

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

Donc, la redirection se produit, et j'ai une configuration très simple sur préférences / index:

    echo "this is the preferences form <br />";
    echo $this->session->userdata('uid');
    echo $this->session->userdata('session_id');

Et le résultat est impénétrable:

this is the preferences form
858f500e167e359edc1942a96f3bac35

Donc, il saute totalement sur l'écho central contenant l'uid. Est-ce que je ne règle pas cela correctement? Existe-t-il un moyen de vider toutes les valeurs du tableau de session pour voir ce qui passe? Toute aide serait formidable.

MISE À JOUR

J'ai exécuté var_dump ($ this- > session- > userdata) sur chaque site Web brut et via Facebook.

Sur le site Web, il expose toutes les valeurs définies dans un tableau contenant 5 valeurs (id_session, IP, User_agent, last_activity et uid).

Cependant, dans le chrome de Facebook, il n’affiche que les 4 valeurs définies par CodeIgniter. J'ai entendu dire que les cookies ne pouvaient contenir que 4K et que le cryptage pouvait poser problème. FB pourrait-il remplir des cookies avec ses propres données chiffrées (en plus grand nombre)?

UPDATE 2

Lorsque je commente la redirection et que je viens d'avoir:

  else {
  $this->session->set_userdata('uid', $user_id);
  echo ':test_'.$this->session->userdata('uid').'_test:';
  //redirect('/preferences/index/', 'location');
  }

Il retourne consciencieusement: test_1234_test: au sein de Facebook. Donc, quelque part pendant la redirection, il perd cette partie du tableau (mais pas tout le tableau).

Est-il éventuellement possible de créer une nouvelle session sur la page de redirection? C’est pourquoi il n’a que les quatre "actions". des variables? Si tel est le cas, je devrai rechercher comment il crée les sessions et si Facebook supprime les cookies, je suppose.

UPDATE 3

Je me suis donc tourné vers l'utilisation d'une base de données pour stocker les informations de session au lieu des cookies, pensant que FB les supprimait ou les heurtait. J'ai actuellement l'application configurée pour

  1. Set $ ??user_id = 1234
  2. $ this- > session- > set_userdata ('uid', $ user_id)
  3. redirection vers la nouvelle page
  4. Var_dump toutes les informations possibles

Voici ce qui se passe dans la base de données: Enregistrements de base de données http://nikolausjj.facebook.joyent.us/Picture2.png

Ainsi, il crée un bon enregistrement, avec les données de l'utilisateur, puis, dès la redirection, crée une nouvelle session sans reconnaître le précédent. Quelqu'un peut-il expliquer où le framework CI vérifie s'il existe déjà une session? Le manuel d'utilisation l'explique comme "magique". fondamentalement.

Était-ce utile?

La solution

Vous pouvez utiliser var_dump () pour sortir la session. Quelque chose comme ça

var_dump($this->session);

L'appel set_userdata a l'air correct. Etes-vous sûr que $ user_id est défini. Parce que l'écho est exécuté correctement mais que uid n'est pas défini ou défini sur une chaîne vide.

Essayez de remplacer l'écho par

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

Autres informations utiles pour répondre

  • Quel navigateur utilisez-vous?
  • Avez-vous un trait de soulignement _ dans votre nom de domaine?
  • Utilisez-vous des sessions CI ou un wrapper pour les PHPessions natives
  • La valeur de uid est-elle également perdue / non définie lorsque vous commentez la redirection?

Autres suggestions:

  • essayez redirect ('/ preferences / index /', 'refresh'); au lieu de emplacement
  • Je ne connais pas bien le développement de Facebook, mais / preferences / index est-il sous votre contrôle? Si oui, essayez de supprimer (si présent) $ this- > charger- > bibliothèque (‘session’) et le charger à la place dans autoload.php .
  • essayez de remplacer $ config [‘sess_match_ip’] par «FALSE
  • essayez de définir $ config ['sess_encrypt_cookie'] sur FALSE
  • essayez de remplacer l'utilisation de CI-Session par la session native de CI
  • Les informations UID sont-elles sensibles si vous ne les stockez pas dans un cookie? Si cela compte, il peut être usurpé. Ne le faites pas.

Autres conseils

Je n'ai pas résolu le problème de la transmission des variables de session d'une page à une autre via Facebook. Ma solution consistait simplement à appeler à nouveau l'API Facebook de l'UID de l'utilisateur sur chaque page. Ce n'est pas une bonne programmation, mais cela fonctionne bien pour moi. : - /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top