Userinformationen (vor allem USER-ID) aus Cookie auslesen durch externe Anwendung

Stefan

Bekanntes Mitglied
Lizenzinhaber
Registriert
9. Juni 2013
Beiträge
469
Punkte
108
Ich habe einen Shop und greife aktuell noch auf die vBulletin Userdaten zu. Dank des Cookies weiß ich, wer gerade im Shop ist und kann diesen persönlich ansprechen usw.

Code:
$vb_session_id = $_COOKIE['bbsessionhash'];
        $usernameSQL = @mysql_query("SELECT user.username, user.userid  FROM session
        left join user
        on session.userid = user.userid
        WHERE session.sessionhash = '$vb_session_id' limit 1") 
        $usernameDB = mysql_fetch_array($usernameSQL);
        $username = $usernameDB['username'];
        $userid = $usernameDB['userid'];

Aber wie geht das bei xenforo? Ich brauche wie gesagt vor allem den Usernamen + Userid + wenn es geht noch die E-Mailadresse für den Shop. Danke euch sehr für jede Hilfe!
 
Ja der shop befindet sich im gleichen Webserver in einem Verzeichnis über dem vom xenforo. Aber wie gehe ich dann da genau vor?
 
Weiß wirklich keiner, wie man die herausbekommt?
 
Ich würde da auf guten alten php code zurückgreifen anstatt nur die Cookie Daten auszulesen

zB
PHP:
<?php


$startTime = microtime(true);
$fileDir = dirname(__FILE__);

require($fileDir . '/library/XenForo/Autoloader.php');
XenForo_Autoloader::getInstance()->setupAutoloader($fileDir . '/library');

XenForo_Application::initialize($fileDir . '/library', $fileDir);
XenForo_Application::set('page_start_time', $startTime);

// wichtig damit das plugin system initialisiert wird
$dependencies = new XenForo_Dependencies_Public();
$dependencies->preLoadData();


XenForo_Session::startPublicSession();

$visitor = XenForo_Visitor::getInstance();

$user_id = $visitor->getUserId();
$username = $visitor->get('username');
$email = $visitor->get('email');
 
Ich würde da auf guten alten php code zurückgreifen anstatt nur die Cookie Daten auszulesen

zB
PHP:
<?php


$startTime = microtime(true);
$fileDir = dirname(__FILE__);

require($fileDir . '/library/XenForo/Autoloader.php');
XenForo_Autoloader::getInstance()->setupAutoloader($fileDir . '/library');

XenForo_Application::initialize($fileDir . '/library', $fileDir);
XenForo_Application::set('page_start_time', $startTime);

// wichtig damit das plugin system initialisiert wird
$dependencies = new XenForo_Dependencies_Public();
$dependencies->preLoadData();


XenForo_Session::startPublicSession();

$visitor = XenForo_Visitor::getInstance();

$user_id = $visitor->getUserId();
$username = $visitor->get('username');
$email = $visitor->get('email');

Perfekt, so läuft es! Echt klasse!!!!!!!!!!! Danke!!!!
 
Ich würde da auf guten alten php code zurückgreifen anstatt nur die Cookie Daten auszulesen

Das funktioniert eigentlich ganz prima, bis auf ein kleines Problem: ich habe gerade ein Auth-Modul für "DokuWiki" geschrieben, damit das Wiki die Anmeldedaten fürs XF benutzt. Nun werden mir in den Server-Fehlermeldungen im XF-Adminbereich häufiger PHP-Warnungen angezeigt, die original vom Wiki generiert werden.

Bei der Suche, wie ich diese Meldungen abschalten kann, ist mir aufgefallen, dass vor

PHP:
            XenForo_Application::initialize($xenforoRoot . '/library', $xenforoRoot);
            XenForo_Application::set('page_start_time', $startTime);
          
            $dependencies = new XenForo_Dependencies_Public();
            $dependencies->preLoadData();
          
            XenForo_Session::startPublicSession();

ein error_reporting() den Wert 22519 und danach den Wert 32767 liefert ...

Inwiefern XF das Error-Reporting "umsetzt" ist mir nicht bekannt, aber für Leute, die auch so ein Problem haben, hilft es, den jeweiligen Status zu sichern und anschließend neu zu setzen:

PHP:
            // save PHP error_reporting()
            $error_report = error_reporting();
           
            XenForo_Application::initialize($xenforoRoot . '/library', $xenforoRoot);
            XenForo_Application::set('page_start_time', $startTime);
           
            $dependencies = new XenForo_Dependencies_Public();
            $dependencies->preLoadData();
           
            XenForo_Session::startPublicSession();
   
            // restore PHP error_reporting()
            error_reporting($error_report);
 
XenForo::Aplication::disablePhpErrorHandler() & enablePhpErrorHandler wäre auch eine Möglichkeit;)
 
XenForo::Aplication::disablePhpErrorHandler() & enablePhpErrorHandler wäre auch eine Möglichkeit;)
Ich habe am Ende des Codes das dank Dir eingefügt:
PHP:
XenForo_Application::enablePhpErrorHandler(); //Fehlermeldungen unterdrücken
Dann waren endlich die zusätzlichen Fehlermeldungen unterdrückt. DANKE!!!!!!!
 
Große Frage, wenn ich die Datei anlege, wie beschrieben, komme ich wunderbar an die User_ID usw. Sobald ich die PHP-Datei aber mit require_once("../forum/userid.php"); einbette, kommt keine User_ID. Warum?
 
Zurück
Oben