wordpress源码分析——登录界面

因为最近想利用wordpress和微信公众平台做点东西,所以需要近一步了解一下wordpress的某些代码。首先是登录界面。

登录相关的流程集中在wp-login.php中。主要的流程在文件的最后switch部分,该部分会根据$_REQUEST变量中的action进入不同的分支。对于登录这个动作来说,action是login,如果没有设置过action,action的默认值也是login。

走到case ‘login’分支后,会先遇到几个判断条件,对于初次进入到登录页面的情况,$_REQUEST变量一般为空,这时会直接进入到显示登录框页面的部分。登录框相关的内容其实蛮简单的:关键就是一个叫loginform的表单。这个表单里有如下几个域:

  • log:用于输入用户名
  • pwd:用于输入密码
  • rememberme:用于永远免登录,value是字符串“forever”
  • interim-login:(暂时不明其含义)
  • wp-submit:字符串域,内容为“Log In”的某种语言的显示,例如中文就是汉字“登录”
  • redirect_to:验证成功登录之后需要跳转到哪个页面。
  • customize-login:(暂时不明其含义)
  • testcookie:value必须为1;否则,即使提供正确的用户名和密码也无法登录。

设置了这几个域之后,用户点击登录按钮后,会将表单提交给wp-login.php,也就是提交给自己,然后就会再次进入switch流程,这是action依然是login,但与上次不同的是$_REQUEST变量里面已经有了内容。所以当再次走到case ‘login’之后,就会被前面的几个if语句拦截,并对$_REQUEST中的一些域做一些预处理,例如去掉用户名中的一些危险字符之类的,然后就进入了验证用户的关键分支:

wp_signon() --> wp_authenticate_username_password() --> wp_check_password()

经过以上几步,就可以完成用户身份的验证,如果验证成功,则调用wp_safe_redirect($url)进行跳转,并返回状态码302;如果验证失败则再次进入登录前的状态,并显示登录界面。

打完收工!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值