2016-04-26 2 views
0

Ich bin eine REST-API für meine Android-App zu erstellen, damit ich CodeIgniter-Datenbank-Session-Manager aktivieren (ich folgte dieser answer), um einige Informationen von meinen Benutzern zu speichern, wenn sie protokollieren .So dekodieren BLOB-Datenobjekt aus der Sitzungstabelle CI

$this->session->set_userdata('key', 'value'); 

Hier mein config.php ist: in

Hier mein Code zum speichern von Informationen ist

$config['sess_driver'] = 'database'; 
$config['sess_cookie_name'] = 'ci_session'; 
$config['sess_expiration'] = 7200; 
$config['sess_save_path'] = 'ci_sessions'; 
$config['sess_match_ip'] = FALSE; 
$config['sess_time_to_update'] = 300; 
$config['sess_regenerate_destroy'] = FALSE; 
$config['sess_expire_on_close'] = TRUE; 
$config['sess_encrypt_cookie'] = TRUE; 

Meine Frage ist: Wie kann ich t Die Informationen, die ich bereits in der Sitzungstabelle gespeichert habe? Ich sehe nur ein BLOB-Objekt in den Spalten ci_session, aber wie kann ich es dekodieren oder wie wird es verwendet?

Ich habe bereits die Sitzungs-ID von meinem Server an meine Android-App gesendet und wann immer meine App Informationen vom Server benötigt, sendet sie sie zurück. Ich habe auch die SELECT-Abfrage das BLOB-Objekt zu erhalten:

$data = $this->db->query("SELECT data FROM ci_sessions WHERE id='5c825c032b6cf25b10e984f0ee8e1bd48a2c1916'"); 
    $query = $data->result(); 

Aber wie erreiche ich den Schlüssel der Daten um den Wert zu erhalten?

Antwort

0

CodeIgniter bereits tut das für Sie, wenn Sie ein Array für die ganze Gruppe von Elementen wollen:

$this->session->all_userdata() 

, dass alle Schlüssel und Werte würden zurückkehren, wenn Sie nur dann einen bestimmten Wert greifen wollen:

$this->session->userdata('foo'); 

Dabei ist foo der Schlüssel des Werts, den Sie abrufen möchten.

Es funktioniert genau wie it is on the documentation der einzige Unterschied ist, dass die Sitzungsdaten in einer Datenbank statt von PHP/Webserver gespeichert werden. Um die Daten zu speichern oder auf sie zuzugreifen, verwenden Sie einfach die üblichen Methoden. Sie müssen die Datenbank nicht direkt nach Sitzungsinformationen abfragen.

Update:

auch sicher, dass Sie zuerst in den Konstruktor zunächst Laden Sie es in Ihrem Controller durch die Sitzungen Bibliothek laden:

public function __construct() 
{ 
    $this->load->library('session'); 
} 

Oder von autoloading the library (was ich (eher zu empfehlen)

+0

Wie weiß CodeIgniter dann, welche Sitzungsdaten abgerufen werden sollen? Ist es wirklich notwendig, meine Session ID von meiner Android App auf den Server zu senden? –

+0

REST ist zustandslos und auch HTTP. Sie können keine REST-API verwenden und versuchen, sie so zu gestalten, dass sie sich wie eine Browsersitzung verhält. Daher müssen Sie die Sitzung abfragen. Haben Sie stattdessen die Verwendung von Token in Betracht gezogen? –

+0

Wie soll ich Tokens verwenden? Also, es gibt kein Wey um mit dem BLOB Objekt zu arbeiten? –