CodeIgniter - Ist meine benutzerdefinierten session-Daten stripped von Facebook?
-
05-07-2019 - |
Frage
Ich Frage mich, ob es einen Weg gibt, dump, alle Werte von
$this->session->userdata()
so kann ich das beheben?
Ich arbeite in Facebook und habe eine login-Seite, und wenn ' s erfolgreich ist, möchte ich pass rund um die UID des aktuellen Benutzers, und ich dachte, dies würde gut funktionieren.
Ich habe derzeit die uid, die wie folgt festgelegt:
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');
}
Damit die Umleitung tritt auf, und ich habe ein sehr einfaches setup über preferences at/index:
echo "this is the preferences form <br />";
echo $this->session->userdata('uid');
echo $this->session->userdata('session_id');
Und das Ergebnis ist ein undurchschaubares:
this is the preferences form
858f500e167e359edc1942a96f3bac35
So ist es völlig überspringt der Mitte echo mit der uid.Bin ich nicht diese Einstellung richtig?Gibt es eine Möglichkeit, sichern Sie alle Werte der session-array, um zu sehen, was immer durch?Jede Hilfe wäre toll.
UPDATE
Ich habe var_dump($this->session->userdata) auf jedem der raw-website und über Facebook.
Auf der Webseite stellt alle eingestellten Werte in einem array 5 Werte (session_id, IP, User_agent, last_activity, und uid-Nummer).
Innerhalb der Facebook chrome allerdings zeigt es nur die 4 Werte, die von CodeIgniter.Ich habe gehört cookies nur im 4k-und, dass die Verschlüsselung könnte das problem sein.Könnte FB Füll-up cookies, mit seinen eigenen verschlüsselten (sprich:größeren) Daten?
UPDATE 2
Wenn ich kommentieren Sie die umleiten, und müssen nur:
else {
$this->session->set_userdata('uid', $user_id);
echo ':test_'.$this->session->userdata('uid').'_test:';
//redirect('/preferences/index/', 'location');
}
Es brav zurück :test_1234_test:innerhalb von Facebook.Also irgendwo während der Umleitung es verliert dieser Teil des Arrays (aber nicht das gesamte array).
Ist es vielleicht einfach nur das erstellen einer neuen session auf der redirect-Seite?So, dass ist der Grund, warum es nur vier "stock" Variablen?Wenn dies der Fall ist, werde ich brauchen, um zu erforschen, wie es erstellt die Sitzungen, und wenn Facebook löscht cookies, nehme ich an.
UPDATE 3
Also habe ich gedreht, um mit einer DB zu speichern session-Informationen statt cookies, denken FB: entweder war Sie zu banalisieren oder zu kollidieren mit Ihnen.Momentan habe ich die app eingerichtet
- Set $user_id = 1234
- $this->session->set_userdata('uid', $user_id)
- Umleitung auf die neuen Seite
- Var_dump alle möglichen Informationen
Was passiert in der DB ist dies:DB records http://nikolausjj.facebook.joyent.us/Picture2.png
So schafft es eine gute Bilanz, mit der Benutzer Daten, dann sofort nach der Umleitung erzeugt eine neue Sitzung, ohne zu erkennen, der vor einer.Kann jemand erklären, wo die CI-framework überprüft, um zu sehen, ob es einer vorherigen Sitzung vorhanden?Die Bedienungsanleitung erklärt es als "Magie" im Grunde.
Lösung
Sie können verwenden var_dump()
zum Ausgang der Sitzung.So etwas wie dieses
var_dump($this->session);
Die set_userdata
rufen Sie ok.Sind Sie sicher $user_id
eingestellt ist.Denn der echo wird ausgeführt, aber surley uid
nicht festlegen oder auf eine leere Zeichenfolge.
Ersetzen Sie das echo mit
echo ':test_'.$this->session->userdata('uid').'_test:';
Andere Informationen, die hilfreich für die Beantwortung
- Welchen browser verwenden Sie?
- Haben Sie einen Unterstrich
_
in Ihren domain-Namen? - Sind Sie mit CI-Sitzungen oder einige wrapper für native PHPsessions
- Ist der Wert für
uid
auch verloren/nicht festgelegt, wenn Sie den Kommentar aus dem redirect?
Andere Vorschläge:
- versuchen Sie es
redirect('/preferences/index/', 'refresh');
stattlocation
- Ich bin nicht vertraut mit facebook-Entwicklung, sondern ist
/preferences/index
unter Ihrer Kontrolle?Wenn ja, entfernen Sie (falls vorhanden)$this->load->library(‘session’)
und stattdessen laden Sie es imautoload.php
. - versuchen Sie es
$config[‘sess_match_ip’]
auf `FALSE - versuchen Sie die Einstellung
$config[‘sess_encrypt_cookie’]
FALSE - ersetzen Sie die Nutzung von CI-Sitzung mit CI Native session
- Ist UID sinnvolle Informationen, wenn Sie nicht speichern Sie es in einem cookie.Wenn es darauf ankommt, wenn es manipuliert werden können nicht.
Andere Tipps
Ich wusste nicht lösen, wie pass-session-Variablen von einer Seite zu einer anderen via Facebook.Meine Lösung war, einfach zu rufen Sie die Facebook-API für den Benutzer-UID auf jeder Seite erneut.Nicht großartiges Programm, aber es funktioniert in Ordnung für mich.:-/