WordPress插件:后台注册通过短信验证用户手机号
经常上网的你,可能已经注意到,目前国内很多网站注册都需要填写手机号了,并且还要接收验证码以确认你是手机号的实际拥有人。这么做可能会引起很多人的反感,觉得这会泄露隐私,但是在目前国家大力实行手机号实名制以及网络实名制的大背景下,根据相关法律规定,网络运营者必须验证用户真实身份,否则会面临网站被关闭及罚款的处罚。目前国内手机号都已实名,验证手机号实际上就已经完成了监管层要求的验证用户真实身份的要求。
我们不争论验证用户手机号的合理性,作为守法公民,按法律规定行事准没错。在WordPress后台用户注册页面,默认只有用户名和电子邮件两个输入框,想要收集注册用户的手机号并验证真实性,该如何实现呢?经常访问露兜博客的朋友可能会记得我之前写过一个插件:WordPress自定义用户注册页面插件,通过这个插件可以扩展WordPress的注册表单功能。在这个插件的基础上,我利用了点业余时间,重新写了个注册时可以验证用户手机号的插件,暂且命名为:Ludou Phone Register
本插件可以免费使用,代码公开,需要本站提供二次开发、更换短信发送接口、添加/修改功能等才需要收费。
插件截图
插件功能
- 在注册页面,可通过短信验证码验证用户手机号真实性
- 在注册页面,用户可直接设置密码
- 在后台 - 个人资料 - 修改手机号页面,用户可以修改手机号
- 可防CSRF跨站攻击
- 图片验证码自动过期,可防短信轰炸
短信接口
这里用到的短信接口是:阿里云短信服务,为什么选用阿里云短信服务作为本插件的短信服务商呢?主要有几点以下原因:
- 有10元的体验红包,开发测试插件正好可以用到;
- 个人用户也可以使用,很多短信接口只有企业可以用;
- 大厂不解释。
不管在哪,发短信都是要收钱的,天下没有免费的午餐,具体价格表请看:短信价格表。
使用方法
- 为了确保插件能够正常运行,推荐使用PHP 5.6以上的版本,低于这个版本可能导致插件无法使用;
- 阿里云短信服务需要一个阿里云账户,也可以用淘宝账号登陆,没有的可以自己注册一个;
- 登陆阿里云后台:登陆地址;
- 新使用的阿里云短信,阿里云会赠送一个有效期一个月的10元代金券,可以抵扣短信费。代金券使用完后需充值才能继续使用短信服务;
- 在阿里云控制台的 秘钥管理页面,点击 创建Access Key,并且确保处于 启用 状态,获取到 AccessKeyId 与 AccessKeySecret;
- 在阿里云 短信签名页面,添加短信签名,签名类型选择"验证码或短信通知",签名填你的网站名称。
不懂的可以看阿里云的文档:申请短信签名; - 在阿里云 短信模板页面,添加短信模板,模板类型选择"验证码",模版名称自己填,模版内容可自行发挥,将验证码用变量
${code}
代替即可。如你可以设置模板内容为:${code} 这是您的短信验证码,10分钟内有效。
或验证码 ${code}
不懂的可以看阿里云的文档:申请短信模板 - 短信签名和短信模板待阿里云审核通过后,记住签名名称和模版CODE;
- 点此下载插件,并解压;
- 用文本编辑器(没有就用记事本)打开ludou-phone-register/config.php,按照注释替换成你的AccessKeyId、AccessKeySecret、签名名称和模版CODE,修改后类似:
// 阿里云 Access Key Id $AccessKeyId = '23456783'; // 阿里云 Access Key Secret $AccessKeySecret = 'cmmmmm0abcdefd8h35861a801ac752d5'; // 短信签名 $sign = '阿里云'; // 短信模板CODE,如SMS_123456789 $template = 'SMS_123456789';
- 将文件夹ludou-phone-register上传至你的网站WordPress插件目录下,即/wp-content/plugins/,然后到WordPress后台激活插件Ludou Phone Register即可,你的后台注册表单就已经像上图的一样了。该插件只针对单站点,开启WordPress多站点功能,本插件无效。
注意,本插件和Ludou Custom User Register插件不可同时使用,可能会出现冲突。
插件使用过程中有什么问题,随时可以:给我留言。
更新记录
1.0版 2017年5月2日
* 首个版本
2.0版 2017年9月14日
* 将短信接口由阿里大于换成了阿里云短信
* 修复后台修改手机号的显示错误
PS:请大家按照我文章中介绍的操作步骤进行申请接口和安装插件,否则可能用不了本插件。有同学想当然地去阿里云市场申请了个短信接口,结果用不了,过来质问我说,你的两个版本插件都是不能用的,都发不了短信,我自己改了就都能用,你说的什么测试正常都是骗人的。
接口都不是同一个接口,短信能发的出去才是见了鬼了呢!
-- 完 --
本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜博客 https://www.ludou.org/wordpress-register-check-user-phone-via-sms.html
我的网站使用的是BuddyPress,我应如何移植对应的注册项到BuddyPress的注册页面上?谢谢了。
可以加一个发短信找回找回密码的功能吗
点击发送验证码 怎么没反应
提示验证码错误 一般是什么原因呢
@织梦 1、没按文中要求配置好相关参数,阿里云的密钥之类不正确
2、阿里云短信余额不足
3、服务器问题
不错的插件
短信签名不支持个人申请,意味着现在不能用了?
@麦田 看起来个人是用不了了,短信签名还是短信发送的必填字段,没签名没法发送短信了。
@麦田 找了一下,可能是监管加强,支持个人开发者的短信接口几乎找不到了,如果有发现的话,可以提供看看。
@露兜 谢谢,知道了。
有一些主题,更改了注册页面, 有什么简单的方法,去掉邮箱验证这一步嘛。
这样登陆安全性提高了,但是感觉太麻烦了。。。
能够提供短信接口的企业现在太流氓了,竟然不向个人提供服务了,非得需要企业才可以,小站长们是无福享受了。那些淘宝商家服务里的一些服务提供商倒是提供短信发送服务,只是可能不好查到他们的平台吧,不知道有没有面向网络个人提供短信接口的呢。
检查短信模板、短信签名是否已经通过审核。短信余额是否充足?
大神厉害了!
露兜太专业了,WP 方面的专家
文章不错,非常喜欢
好多好多年前我记得这个博客
现在我又来了,很高兴,你的博客还在。我的博客也在,哈哈哈哈。
不知道 这个插件是否能配合邀请码使用
@poke 可以,但是得单独写代码。
考虑一下腾讯云短信嘛?个人可以申请
@久光 一次要购买1000条短信,且不提供开发测试短信数。
@露兜 如果你有开发的想法的话,可以联系一下我,我有闲置的1万条的短信包,已经吃灰半年了。。。明年2月就到期了,1条还没用。。。
do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );在这里卡住了。请问是为什么
do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );代码走到这就卡住了。请问是为什么?
不显示“获取短信验证码”那个按钮是怎么回事?
php 7.1 不显示图片验证码
这个插件好像不兼容WooCommerce插件,安装这个插件之后,短信注册就显示不出来了。
好像发不了短信了,是不是阿里云短信服务更新了api接口规则?或者需要下载阿里云的短信sdk?
插件安装了没反应
你好,点击“获取短信验证码”没反应,貌似 add_action('wp_ajax_sendSms', 'sendSms'); 没有执行,请问是怎么回事?
http://www.ludou.org/tool/o-base64/
这个工具无法访问了,好可惜!!!