从WordPress Cookie获取用户的用户名

时间:2012-01-13 作者:user1114968

我的朋友有一个代码,允许用户接收一个特殊密钥,以进入他们选择的任何游戏的封闭/开放测试活动。当一个人登录时,他们可以单击一个链接,该链接将显示一个密钥。如果有人登录,事件页面将告诉他们登录。我的朋友需要的是一种在用户登录后从wordpress登录cookie中获取用户名的方法。我们发现wordpress cookie名称对于每个登录的用户都是唯一的(换句话说,cookie名称中有一个随机字母和数字字符串)。有什么想法吗?

我们在页面上使用的代码如下:

$username = $_COOKIE["nameofcookiehere"]
我们需要$username变量,以便给定的每个密钥都将分配给基于cookie登录的用户名,并且密钥将在数据库中标记为“1”或“take”,并且密钥将分配给数据库中的该用户。

2 个回复
SO网友:SickHippie

get_currentuserinfo();
$username = $current_user->user_login
这样可以获取当前用户的用户名。您可以阅读更多关于get_currentuserinfo(); here 在法典中。它提取有关用户的所有基本信息—用户名、显示名、电子邮件、名字/姓氏和用户ID。

这将非常方便,因为您可以根据用户名验证用户,然后根据UID在DB中分配密钥。

SO网友:Ale

因为问题是如何从cookies中获取用户名,所以这里有一个解决方案:

function is_user_administrator(): string {
    if ( function_exists( \'get_site_option\' ) ) {
        $siteurl = get_site_option( \'siteurl\' );
        if ( $siteurl ) {

            $cookie_hash = \'wordpress_logged_in_\' . md5( $siteurl );
            if ( ! isset( $_COOKIE[ $cookie_hash ] ) ) {
                return \'\';
            }
            $cookie = $_COOKIE[ $cookie_hash ];

            $cookie_parts = explode( \'|\', $cookie ); // 0 => user_login, 1 => expiration, 2 => token, 3 => hmac
            // check if the cookie has the correct number of parts, if not then we can\'t be sure that $cookie_parts[0] is the user name
            if ( count( $cookie_parts ) !== 4 ) {
                return \'\';
            }
            return $cookie_parts[0];
        }
    }
}
为什么要使用此方法来获取用户名,而不是get_currentuserinfo() (正如“病态嬉皮士”所建议的那样)?有些情况下,您希望挂接到过早执行的操作get_currentuserinfo 尚未声明。这种情况可能是option_active_plugins 动作挂钩,其中声明的WP函数和全局函数不多。

结束