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

  1. Set $user_id = 1234
  2. $this->session->set_userdata('uid', $user_id)
  3. Umleitung auf die neuen Seite
  4. 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.

War es hilfreich?

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'); statt location
  • 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 im autoload.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.:-/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top