2017-10-12 1 views
0

Ich habe eine ganze Website in einem WordPress-Plugin enthalten. Ich habe versucht, von WordPress wegzukommen, aber ich bin immer noch auf Manager-Benutzer angewiesen. Ich muss auf die Daten des aktuell angemeldeten Benutzers zugreifen, insbesondere deren ID.Zugriff auf eingeloggte Benutzerdaten in der Post-Anfrage?

Beim Versuch, ihre Daten in bestimmten Orten zuzugreifen hielt ich das Objekt keinen Benutzer bekommen:

object(WP_User)#1033 (7) { 
    ["data"]=> 
    object(stdClass)#1032 (0) { 
    } 
    ["ID"]=> 
    int(0) 
.... 

Am Ende scheint es auf diese zu kochen. Ich versuche, diese Daten in Controller von meinem schlanken Router genannt zu bekommen:

$this->get('/assignments', function(Request $req, Response $res, array $args){ 
require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'; 
    $ch_user = wp_get_current_user(); 
    var_dump($ch_user);die(); 
} 

und:

$this->post('/userdata', function(Request $req, Response $res, array $args){ 
require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'; 
    $ch_user = wp_get_current_user(); 
    var_dump($ch_user);die(); 
} 

Diese beiden Strecken sind in der gleichen Gruppe, Linien voneinander. Die erste gibt das korrekt gefüllte Benutzerobjekt zurück, und die zweite gibt die leere mit ID: 0 zurück. Der einzige Unterschied zwischen den beiden besteht darin, dass eine eine Abrufanforderung ist und eine eine Abrufanforderung ist.

Ich bin kein Wort Presseexperte, und ich bin nur völlig davon verblüfft.

edit:

ich ähnliche Probleme ungelöst gefunden:

WordPress Ajax Call -- WordPress User ID

Wordpress REST API Retrurning Currnet User ID as 0

Antwort

1

Von Ihrem Kommentar Ich gehe davon aus, dass der aktuelle Benutzer in Ihrer Wordpress-Sitzung festgelegt wurde mit dem Standard WordPress Login, z http://aaa.bbb.ccc/wp-login.php.

In diesem Fall werden die aktuellen Benutzerinformationen als Cookies empfangen. Der übliche Credential-Cookie ist in $ _COOKIE [LOGGED_IN_COOKIE]. Können Sie bestätigen, dass dies in beiden Endpunkten identisch ist:

var_dump($_COOKIE[LOGGED_IN_COOKIE]) 

Eine Möglichkeit, dass dieses Cookie erhalten oder nicht beschädigt ist, dann wird festgelegt wird der aktuelle Benutzer auf 0 gesetzt ist

+0

Ja, Sie haben Recht, Der eingeloggte Cookie ist in der get-Anfrage korrekt und in der post-Anfrage null. Die beiden Operationen werden auf die gleiche Weise an der gleichen Stelle durchgeführt, ich kann nur denken, dass das Problem mit schlank liegt. Ich suche nach etwas, das mit schlanken Posts funktioniert, die Cookies löschen, aber ich kann keine Lösung finden:/ – SpeedOfRound

+1

Der eingeloggte Cookie kann direkt vom Server oder indirekt durch JavaScript-Code im Client gelöscht (abgelaufen) werden Browser. Sie können überprüfen, ob der Server den angemeldeten Cookie direkt löscht (abläuft), indem Sie das Netzwerk-Tool Ihres Browsers verwenden und die vom Server gesendeten Cookies überwachen. Der Server löscht einen Cookie, indem er abläuft. Im Chrome-Netzwerk-Tool werden die vom Server gesendeten Cookies Response-Cookies genannt. – B68C

+0

Wenn die Cookies gelöscht wurden, würde mich das nicht abmelden? Der Cookie fehlt nur während der Anfrage. – SpeedOfRound

Verwandte Themen