it-swarm.com.de

Wie lese ich bzw. Joomla-Sitzungsdaten aus der Datenbank lesen?

Gibt es eine Möglichkeit, Joomla-Sitzungsdaten in PHP) zu lesen bzw. zu analysieren, da session_decode() und unserialize() nicht mit diesen Werten arbeiten?

In meiner Komponente muss ich Daten aus allen aktiven Nicht-Gastsitzungen lesen (Datenspalte in der #__session-Datenbanktabelle) und prüfen, ob bestimmte Variablen vorhanden sind.

2
Mario Neubauer

In diesem Feld werden Daten in Namespaces aufgeteilt. Der Namespace und seine Daten sind durch | Getrennt. Wenn Sie also explode('|',$data) verwenden, erhalten Sie ein Array, in dem ein ungerades Indexelement ein Datenarray und jedes gerade Indexelement ein Namespace ist. Hier ist ein Beispiel, wie diese Variable in Namespaces dekodiert wird:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('data')->from('#__session');
$db->setQuery($query);
$raw_data = str_replace('\0\0\0', chr(0) . '*' . chr(0), (string)$db->loadObject()->data);
$raw_data = explode('|',$raw_data);

$data = array();
for( $idx = 1, $ic=count($raw_data); $idx<$ic; $idx+=2 ) {
    $data[$raw_data[$idx-1]] = unserialize($raw_data[$idx]);
}

Die Variable $data Enthält Sitzungsdaten, die in separate Array-Elemente aufgeteilt sind, wobei der Array-Schlüssel der Namespace ist. Der Standard-Namespace sollte an erster Stelle stehen und sein Index sollte __default Sein.

2
Artur Stępień