簡體   English   中英

如何在我的網站上閱讀wordpress cookies?

[英]How to read wordpress cookies in my website?

我想將我的網站與wordpress集成。我想知道如何閱讀wordpress cookies,以便我不需要在我的網站再次驗證用戶。我嘗試在我的網站中包含wordpress的頭文件,但后來我是無法連接到我的網站的數據庫。其中兩個是不同的。我可以設置其他參數的cookie,如用戶級別等?我的網站是用PHP編寫的。

在您的網站中,在每個文件的頂部包含該代碼:

<?php 
define('WP_USE_THEMES', false);
require('./blog/wp-blog-header.php');
?>

...假設您的博客位於./blog/

它包括整個wordpress堆棧。 您可以訪問代碼中的所有wordpress函數。 有了它,您可以輕松檢查用戶是否已登錄,角色和功能,還可以檢索帖子等。

然后在你的代碼中,檢查用戶:

if (is_user_logged_in()) { ... } 

Codex:is_user_logged_in()

您還可以包含退出鏈接:

<a href="<?php bloginfo("url"); ?>/wp-login.php?action=logout/">Logout</a>

如果您的博客和您的網站不在同一個域或子域中,則必須在wp-config.php自定義cookie域

define('COOKIE_DOMAIN', '.domain.com'); // Share cookie on all subdomains

編輯

如果你真的只想閱讀wordpress cookies(這是一個很好的性能選擇):cookie名稱存儲在一個常量AUTH_COOKIE中。

AUTH_COOKIE在/wp-includes/default-constants.php -> line 171定義為

"wordpress_" + md5( get_site_option(siteurl) )

您必須檢索或重新計算AUTH_COOKIE然后讀取$ _COOKIE [AUTH_COOKIE]。

要解析它,請查看wp-includes/pluggable.php @line 585中的wp_parse_auth_cookie() (實際上格式為簡單user|expiration|hmac因此將鏈拆分為|並獲取第一個元素)

要使Cookie在Wordpress中運行,您需要在functions.php中將其設置為特殊方式

function set_newuser_cookie() {
    if (!isset($_COOKIE['sitename_newvisitor'])) {
        setcookie('sitename_newvisitor', 1, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
    }
}
add_action( 'init', 'set_newuser_cookie');

所以重要的一點是setcookie('sitename_newvisitor', 1, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);

為拿到它,為實現它

if (isset($_COOKIE['sitename_newvisitor'])) {
     echo 'Welcome back!';
}
else {
     echo 'Hello new visitor!';
}

注意 :您可以更改cookie名稱'sitename_newvisitor',值,超時,COOKIEPATH和COOKIE_DOMAIN以滿足您的需求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM