LXTX
龙笑天龙笑天  3周前 (12-23) 来源:龙笑天下 隐藏边栏 |   14 条评论  306 
文章评分 53 次,平均分 5.0
导语:本文主要介绍WordPress实现用户自动登录的方法,wp_signon()和wp_set_auth_cookie()函数,以及解决一个启用https后出现的进不了wordpress后台的问题~

所有带前端用户注册功能的wordpress主题中都会遇到这样一个使用场景:用户填写用户名及密码等信息注册成功后,都希望同时能自动登录。

WordPress实现用户自动登录的方法 wordpress

那么,怎么实现这个自动登录呢?本文为你分享2个自动登录的方法,大家可以自由使用。

方法一:利用wp_signon()函数来实现

介绍下该函数先~

函数描述:

根据给定的凭证来验证用户身份。

用法:

参数:

$credentials

(数组)(选填)用户的登录信息。注意:如果不填写该项的话,该函数会默认使用$_POST变量的值(键名为"log", "pwd" 和 "rememberme");

默认值:无

$secure_cookie

(布尔)(选填)是否使用安全cookie。

默认值:无

返回值:

(对象)成功的话返回WP_User,失败的话返回WP_Error

举例:

将以下代码应用到你的WordPress中即可实现自动登录功能:

方法二:无需密码的方式

通过上面的介绍我们可以看出wp_signon()函数是需要知道用户的用户名及密码的;而现在有种更好的实现方法,不需要知道帐号密码,只需指定用户名即可,实现代码如下:

在这里用到了这个函数:wp_set_auth_cookie(),这个函数的用法跟wp_signon()函数类似:wp_set_auth_cookie( $user_id, $remember, $secure ),第一个参数是用户ID,第二个是是否记住用户,第三个是是否启用安全cookie~

特别说明

1. 如果将方法一或方法二的代码示例,直接放到主题的functions.php中,那么只要打开前台任何页面,就会自动登录到你设置的用户名example下。本文只是提供自动登录的方法,至于怎么使用用就得看你具体的需求了。

2. 请注意 wp_signon() 函数里的$secure_cookie参数和 wp_set_auth_cookie() 函数里面的$secure参数:请把这2个参数留空,不要设置值!龙笑天下在启用SSL的时候,就因为设置该参数为false,导致出现了一个奇怪“无解”(找遍了网络都没找到真正的解决方法... 都在说什么cookie的路径问题....)的现象,现将该现象描述如下以供遇到同样问题的你来参考:

a. 通过主题前台的弹出框输入用户名及密码方式来登录的话,前台能正常登录,前台页面能正常浏览,一切“如常”;让人崩溃的问题就来了:一旦你打开后台页面,你会被强制退出登录,就是进不了wordpress的后台...
b. 通过wordpress的后台默认登录页面(wp-login.php)或者通过社交按钮来登录的话,则能够自由出入前后台~

通过搜索,使用了网上的几乎所有方法,都无果... 只能确认是cookie的问题~

后来通过比较a和b两种情形的cookie发现了问题所在,唯一区别就是:a情形里cookie名是:wordpress_396e26512564256ed830cb7909cc751e,b情形里cookie名是:wordpress_sec_396e26512564256ed830cb7909cc751e。大家应该发现问题了吧,cookie名里多与少了一个sec的区别。

最后通过定位主题的登录函数,发现了是这个函数的问题:wp_signon()

该函数如果第2个参数如果留空不设置值话,它就会自动判断站点是否启用了https,从而自动判断是否使用安全cookie。而我的主题里却把第2个参数值定死为false了......

最最后,友情提示主题制作者,一定要注意下这些个小细节啊~ PS:当时启用https后,因为这个问题,简直想屎的心都有了~~~~~~~~~

更多关于tinection主题的bug及修复方法详见下文:

知言Tinection主题中的小Bug及修复方法(更新到6个Bug)
这篇文章主要介绍知言的tinection主题的一些小bug以及相应的解决方法。Bug 1:分页导航的问题5月17日,浏览同样使用tinection主题的博客时,发现分页导...
阅读:2.83k   评论:88   喜欢:14   评分:

关于禁止用户登录、禁止多人同时登录一个账户的方法可参见下面2篇文章:

WordPress 禁止某些用户登录
在某些特殊情况下,比如某些用户损害了网站的利益,你可能就需要禁止他们登录网站。要实现这样的功能,可以直接下载安装 Disable Users 或者 BAN Users 插件。...
阅读:341   评论:29   喜欢:7   评分:
WordPress 禁止多个人登录同一用户帐号
许多 Wordpress 都是开放注册的,又有不少的站点是在做交易站点,可以进行购买实物在线交易的,在线交易的站点往往是禁止同一个帐号多人使用的,而在 Wordpress 中是没有限制的,也...
阅读:280   评论:4   喜欢:5   评分:

相关参考

wp_signon() 位于文件 wp-includes/user.php;
wp_set_auth_cookie() 位于文件 wp-includes/pluggable.php。
Function Reference/wp signon « WordPress Codex
Function Reference/wp set auth cookie « WordPress Codex
WordPress实现用户自动登录 - ludou

 

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

龙笑天
龙笑天 关注:9    粉丝:3 最后编辑于:2018-01-11
互助分享,互联网本该如此!
×

感谢您对龙笑天的支持,么么哒~

支付宝打赏 龙笑天
请扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

龙笑天下 - 分享悲伤;共享快乐

发表评论

表情 贴图 链接 私密 格式 签到

最赞评论
  1. 懿古今
    懿古今 评论达人 LV.3 来自天朝的朋友 谷歌浏览器 Windows 7 广西南宁市 电信

    @龙笑天如果上用户中心,真的需要折腾很多很多东西,目前还下不定决心,以后再看看情况。

    4 0
  2. 潇青博客
    潇青博客 来自天朝的朋友 谷歌浏览器  X1 7.0 Build/HuaweiMediaPad P1 4.4.2 河北省邢台市 电信

    自动登陆反倒不习惯,总感觉少了点什么。

    2 0
  3. 龙笑天
    龙笑天 年费会员 博 主 来自天朝的朋友 火狐浏览器 Windows 7

    @懿古今[坏笑] 可以找机会整上用户中心哦~

    1 0
  1. BanYuner
    BanYuner 评论达人 LV.2 来自天朝的朋友 谷歌浏览器 Windows 10 湖北省武汉市 电信

    只需要用户名,这个也太狠了吧

    6楼 1小时前
    0 0 回复
  2. 80后记忆
    80后记忆 来自天朝的朋友 QQ浏览器 Windows XP 辽宁省盘锦市 联通

    我就看看,太高深,代码小白一个。

    5楼 15天前
    0 0 回复
  3. 99八十一
    99八十一 来自天朝的朋友 QQ浏览器 Windows XP 辽宁省盘锦市 联通

    厉害了我的哥,真能折腾啊!

    4楼 15天前
    0 0 回复
  4. 懿古今
    懿古今 评论达人 LV.3 来自天朝的朋友 谷歌浏览器 Windows 7 广西南宁市 电信

    没有用户中心,可以减少很多折腾,所以只能看着你们折腾了

    地板 17天前
    0 0 回复
  5. 潇青博客
    潇青博客 来自天朝的朋友 谷歌浏览器  X1 7.0 Build/HuaweiMediaPad P1 4.4.2 河北省邢台市 电信

    自动登陆反倒不习惯,总感觉少了点什么。

    板凳 17天前
    2 0 回复
  6. 橘子书
    橘子书 评论达人 LV.2 来自天朝的朋友 谷歌浏览器 Windows 10 福建省漳州市 电信

    牛,我都不会wordpress代码了。

    沙发 18天前
    1 0 回复
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册

您也可以使用第三方帐号快捷注册

扫一扫二维码分享
Tips:
网站已开启关注与粉丝功能,求哦~