实现我公司商城注册会员用手机号登录这个功能,那么这个功能容易修改,但是这里有一个问题,就是如果实现了用手机号码来登录,那么就需要在注册时保证会员所填写的手机号是唯一的,也就是说手机号还未被注册,那么该怎么来检测填写的手机号是否注册过了呢?


一、参考检测邮箱

因为注册页面,有检查用户名和邮箱是否重复的步骤,初步想法是参考检测邮箱的方式来解决,但是查看user_passport.dwt,如下:

似乎可以像上面一样开为手机号的input标签中添加一个onblur事件,但是找了又找,并没有发现手机号码的input标签在哪里,倒是发现了如下的代码:

恍然大悟,因为默认的ecshop注册页面上的手机号并不是必填的选项,而且可以在后台进行管理的,且这些选项在ecshop数据表esc_reg_fields表中,因此参考检测email的方法失败!

二、解决方案

通过查看页面的代码,用户点击注册按钮的时候,有一个return register();该方法在js/user.js文件中,故我们可以从此方法入手,在验证完手机号的正则匹配后,进行手机号是否被注册的验证。

1、修改user.js文件

在/htdocs/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、在user.php中添加 check_mobile_phone的处理

在/htdocs/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';}
}

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的值,这个我没有方法可以做到,也算是一点小小的遗憾吧,这里提出来,博客园里面的博友们如果有好的方法,请不吝赐教!


浏览器兼容

  1. 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
  2. IE9以下不支持
  3. IE9,10,11存在以下问题
    1. 不支持离线功能
    2. IE9不支持文件导入导出
    3. IE10不支持拖拽文件导入

Ecshop实现注册页面手机号唯一的验证相关推荐

  1. 邮箱取消必填php,WordPress注册页面如何去掉邮箱验证,从而不再是必填选项?

    现在很多网站已经不会将邮箱作为必填项,都会选择使用手机号可以注册登录,所以邮箱注册就不必设置为必填项目,那么WordPress注册页面如何去掉邮箱验证,从而不再是必填选项? 这个需求比较特殊,但是我还 ...

  2. 前端登录和注册页面的实现及验证

    登录界面 文本框中在输入前要显示相应的背景图片和悬浮字,鼠标移上去之后就消失.在输入框内会进行检查,利用正则化方程判断输入是否符合要求,其中验证码区分大小写.点击验证码可以实现换一张验证码.点击免费注 ...

  3. JavaScript实现注册页面的表单验证

    基于javaweb的学习以及为后面做项目做基础,其次参考资料做了些琢磨来实现这个登录界面的注册的验证,下面是效果图(顺便附加素材) 下面是代码展示 1.注册界面register.html <!D ...

  4. unity(登录注册用手机号短信验证)

    短信验证 1.短信验证我是通过mob的SMSSDK实现的(free) 官网下载:http://www.mob.com/wiki/detailed?wiki=SMSSDK_for_Unity3D& ...

  5. 使用JSP Servlet和Ajax实现简单的注册页面的用户名密码验证

    大家都知道Ajax并不是一项新的发明技术,它的全称是Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).我们在使用html表单提交页面时,会有一 ...

  6. php登陆页面修改密码的功能,使用bootstrap创建登录注册页面并实现表单验证功能...

    本篇文章给大家介绍一下使用bootstrap创建登录注册页面并实现单验证功能的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 用bootstrap做登入注册页面,使用valid ...

  7. 如何设计出用户体验良好的登录/注册页面

    对于开发者来说登录/注册页面是再熟悉不过的了,然而要想提供更好的登录/注册体验的话就需要一些技巧了.应用了下面这些小技巧的话,你的登录注册页面在实现基本功能的同时还能提供非常流畅的体验. 1.不要将& ...

  8. 【JS】制作注册页面

    使用js制作注册页面,使用正则表达式验证该数据是否符合要求 <!DOCTYPE html> <html><head><meta charset="U ...

  9. Java实现登录与注册页面

    用java实现的登录与注册页面,实现了客户端(浏览器)到服务器(Tomcat)再到后端(servlet程序)数据的交互.这里在注册页面加入了验证码验证. 注册的html代码,页面非常丑!!请见谅.. ...

最新文章

  1. Cookie和会话状态 (转)
  2. Mozilla Prism v0.9 For Windows/Linux/Mac
  3. 通过开始关键字和结束关键字,查找所有的邮箱名称记录
  4. MAC启动redis的目录
  5. 转】未指定 INSTANCESHAREDWOWDIR 命令行值。如果指定INSTANCESHAREDDIR 值,则必须指定该值 ....
  6. 雷军穿上印度传统服装:网友以为《西游记》拍新版了 这画面感受下
  7. 在SQLServer2005中使用全文搜索
  8. html设置ie9兼容性视图,ie9兼容性视图设置方法
  9. vue将文件图片批量打包下载zip
  10. x64dbg 修改为dll_X64Dbg使用教程
  11. 基于神经网络的图像去水印/图像修复实践
  12. 美图嗅嗅+到意大利的水族馆里吃西餐
  13. 高考计算机会考等级划分标准,学考等级怎么划分标准2021
  14. C语言编程实现程输出所有玫瑰花数
  15. 康福中国服务器位置,康福中国camfrog服务器管理命令有哪些?
  16. [从头读历史] 第256节 孔子和他的《春秋》 [BC597至BC538]
  17. 知识转移策略的跨域故障诊断
  18. php hrtime stopwatch,学习PHP中的高精度计时器HRTime扩展
  19. matlab求分段函数最小值,用matlab如何求一个分段函数的积分?
  20. SpringBoot+Vue高校学生评教系统java教学质量评估系统

热门文章

  1. GlobeLand30影像下载、去除黑边、镶嵌、裁剪、重分类
  2. MarkDown 图片大小问题
  3. Accumulation Degree
  4. 7zip@命令行压缩@解压缩7z/zip/等各种压缩格式包@查看压缩包内容
  5. pwm控制直流电机转速流程图_直流电机的PWM速度控制程序
  6. SpringCould整合oauth2
  7. 百度每个月的收录时间
  8. 计算机信息与科学学院青协,武汉东湖学院计算机科学学院青年志愿者协会
  9. Apache Log4j Server 反序列化漏洞(CVE-2017-5645)
  10. 简单c语言飞碟射击游戏