您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程

ecshop注册页面手机号唯一的验证方法

春竹2025-01-08Ecshop商城教程已有人查阅

导读如果Ecshop实现了用手机号码来登陆,那么就需要在注册时保证会员所填写的手机号是唯一的,也就是说手机号还未被注册,那么该怎么来检测填写的手机号是否注册过了呢?

如果Ecshop实现了用手机号码来登陆,那么就需要在注册时保证会员所填写的手机号是唯一的,也就是说手机号还未被注册,那么该怎么来检测填写的手机号是否注册过了呢?
一、参考ecshop检测邮箱
因为注册页面,有检查用户名和邮箱是否重复的步骤,初步想法是参考检测邮箱的方式来解决,但是查看user_passport.dwt,如下:
似乎可以像上面一样开为手机号的input标签中添加一个onblur事件,但是找了又找,并没有发现手机号码的input标签在哪里,倒是发现了如下的代码:
恍然大悟,因为默认的ecshop注册登录界面模板页面上的手机号并不是必填的选项,而且可以在后台进行管理的,且这些选项在ecshop数据表esc_reg_fields表中,因此参考检测email的方法失败!二、解决方案
通过查看页面的代码,用户点击注册按钮的时候,有一个return register();该方法在js/user.js文件中,故我们可以从此方法入手,在验证完手机号的正则匹配后,进行手机号是否被注册的验证。
2.1 、修改user.js文件
在user.js文件中找到如下代码:
if (mobile_phone.length>0)
{
var reg = /^[\d|\-|\s]+$/;
if (!reg.test(mobile_phone))
{
msg += mobile_phone_invalid + '\n';
}
}
将其替换为如下代码:if (mobile_phone.length>0) {
var reg = /(^1[3|5|8][0-9]{9}$)/;;
if (!reg.test(mobile_phone))
{
msg += mobile_phone_invalid + '\n';
}
else{
//该请求必须为同步请求,否侧msg赋值失败,注册提交。
$.ajax({
type: 'GET',
url: 'user.php?act=check_mobile_phone',
data: {mobile_phone:mobile_phone},
async:false,
dataType: 'text',
success: function(data){
if (data == 'false')
{
msg += mobile_phone_invalid2+'\n';
}
else
{
}
}
});
}
}
2.2、在user.php中添加 check_mobile_phone的处理
在user.php中找到如下代码:
/* 验证用户邮箱地址是否被注册 */elseif($action == 'check_email')
{
$email = trim($_GET['email']);
if ($user->check_email($email))
{
echo 'false';
}
else
{
echo 'ok';
}
}
复制一份,并添加在其下面,修改为如下:
/* 验证用户手机号是否被注册 */elseif($action == 'check_mobile_phone')
{
$mobile_phone = trim($_GET['mobile_phone']);
if ($user->check_mobile_phone($mobile_phone))//如果已经被注册
{
echo 'false';
}
else
{
echo 'ok';
}
}
2.3、在integrate.php中添加 check_mobile_phone函数
在includes/modules/integrates/integrate.php中找到如下代码:
function check_email($email)
{
if (!empty($email))
{
/* 检查email是否重复 */
$sql = "SELECT " . $this->field_id .
" FROM " . $this->table($this->user_table).
" WHERE " . $this->field_email . " = '$email' ";
if ($this->db->getOne($sql, true) > 0)
{
$this->error = ERR_EMAIL_EXISTS;
return true;
}
return false;
}
}
复制一份,并添加在其下面,修改为如下:
function check_mobile_phone($mobile_phone)
{
if (!empty($mobile_phone))
{
/* 检查手机号是否重复 */
$sql = "SELECT " . $this->field_id .
" FROM " . $this->table($this->user_table).
" WHERE mobile_phone= '$mobile_phone' ";
if ($this->db->getOne($sql, true) > 0)
{
return true;
}
return false;
}
}
至此,问题得以解决,此方案中并没有使用ecshop自身封装好的Ajax.call(...)方法,Ajax.call(...)方法其实用起来相当的方便,但是根据其回调函数的返回值才改变register()函数中的msg的值,这个我没有方法可以做到,也算是一点小小的遗憾吧,这里提出来。

本文标签:

很赞哦! ()

相关源码

  • (自适应)电子元件电路板元器件pbootcms网站源码下载为电子元器件、电路板制造类企业设计,特别适合展示产品参数、技术规格等内容。采用响应式技术,确保各类电子元件在不同设备上都能清晰展示。查看源码
  • 帝国cms7.5文库范文/付费下载/复制付费/带支付源码免费下载本模板为文库、文档分享、知识付费类平台设计,提供完整的内容变现解决方案。系统支持多种内容展示与付费模式,满足不同场景下的内容价值转化需求,帮助平台实现内容资源的有效管理和商业化运营。查看源码
  • (自适应)证书授权书防伪查询系统pbootcms模板本模板基于PbootCMS系统开发,为各类证书查询机构设计,可快速构建高效安全的证书核验平台。采用响应式布局技术,自动适配手机端操作,支持批量导入证书数据,提供便捷的查询接口,满足机构证书管理及用户在线核验需求。查看源码
  • (自适应)html5宽屏电线电缆材料加工制造类企业网站源码下载本模板基于PbootCMS系统开发,特别适合电线电缆、电缆材料及相关加工制造类企业使用。采用HTML5宽屏设计,能够展示各类电缆产品的技术参数和规格详情,帮助客户全面了解产品特性。查看源码
  • (自适应响应式)供应链进出口服务pbootcms企业网站源码为供应链管理、进出口服务类企业设计,特别适合展示物流网络、贸易服务和供应链解决方案。采用响应式技术,确保在各类设备上都能呈现企业服务内容。查看源码
  • (自适应)品牌策划高端设计公司网站pbootcms模板免费下载本模板为品牌策划与设计公司打造,基于PbootCMS内核开发,充分考虑了创意设计行业的视觉展示需求。模板设计风格现代简约,布局合理清晰,呈现设计作品与专业服务,帮助设计公司展示创意实力并吸引潜在客户。查看源码
分享笔记 (共有 篇笔记)
验证码:

本栏推荐