2017-10-12 30 views
0

我有一個wordpress插件中包含的整個網站。我一直試圖擺脫WordPress的,但我仍然依靠它來管理用戶。我需要訪問當前登錄用戶的數據,特別是他們的ID。在發佈請求中訪問已登錄的用戶數據?

當試圖訪問某些地方的數據我一直得到沒有用戶對象:

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

最後,它似乎歸結爲這一點。我想在控制器由我纖細的路由器叫了這樣的數據:

$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(); 
} 

和:

$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(); 
} 

這兩種途徑都在同一組,彼此分開行。 第一個返回正確填充的用戶對象,第二個返回ID爲0的空對象。兩者之間唯一的區別是一個是獲取請求,另一個是發佈請求。

我不是新聞專家,我對此完全感到困惑。

編輯:

我發現類似的問題得不到解決:

WordPress Ajax Call -- WordPress User ID

Wordpress REST API Retrurning Currnet User ID as 0

回答

1

從您的評論我假設在你的WordPress會話當前用戶使用標準設置WordPress登錄,例如http://aaa.bbb.ccc/wp-login.php

在這種情況下,當前的用戶憑據將作爲cookie收到。通常的憑證cookie位於$ _COOKIE [LOGGED_IN_COOKIE]中。您可以驗證這是相同的兩個端點的通過:

var_dump($_COOKIE[LOGGED_IN_COOKIE]) 

一種可能性是,這個cookie沒有收到或損壞,則當前用戶將被設置爲0。

+0

是的,你是對的,登錄的cookie在get請求中正確,在post請求中爲null。這兩個操作在同一個地方以相同的方式完成,我只能認爲問題在於纖細。我正在尋找任何與苗條帖子丟棄cookie有關的事情,但我似乎無法找到解決方案:/ – SpeedOfRound

+1

登錄的cookie可以直接由服務器刪除(過期),或者通過在客戶端運行的JavaScript代碼間接刪除瀏覽器。您可以檢查服務器是否使用瀏覽器的網絡工具直接刪除(過期)登錄的Cookie,並監控服務器發送的Cookie。服務器將通過過期來刪除cookie。在Chrome網絡工具上,服務器發送的Cookie稱爲響應Cookie。 – B68C

+0

如果cookies被刪除了,會不會把我註銷?該cookie只在請求期間丟失。 – SpeedOfRound

相關問題