一个输入框能输入手机号和用户名来登录,如何判断用户输入的是手机号还是用户名?


其实我主要是想知道美团这些app,登录页里一个输入框能输入手机号和用户名,是如何判断用户输入是的手机号还是用户名?

如果 用户1 手机号A 通过手机号注册了一个账号。然后修改用户名为 手机号B
但是 手机号B 用户2 的手机号,然后 用户2 手机号B 通过手机号也注册了一个账号。

假设他们两个都用了相同的密码,那如何让 用户1 在登录页面输入 手机号B 时不能登录 用户2 的账号?

美团登录页

java Android ios

永恒的指引 10 years, 11 months ago

首页可以确定,你所述的这种情况是极少情况下出现的。

你要知道手机、邮箱、用户名之间的区别

1.手机号:纯数字;
2. 邮箱 :带@符号
3. 用户名:一般不会是纯数字(字母+数字或+符号之类的)

那么问题就出来了,登录名一般是不允许重复使用的(这在客户端和服务端都是有校验的)
我们需要做的其实就是在判断用户输入的是哪一种类型的用户名就可以了。

PLS131 answered 10 years, 11 months ago

现在一般注册用户都是不能使用纯数字来注册的,基本都会要求首字符为字母或者用邮箱账号来注册.
这样的话就不存在问题了啊,就可以用正则表达式来匹配这是一个邮箱或者是一个手机号又或者是一个自己注册的用户名.

dorayun answered 10 years, 11 months ago

我目前做的 是 用户名不能全是数字 手机号码是数字 邮箱一般有@符号

笨拙的魔术师 answered 10 years, 11 months ago

1.美团的注册是 不能以数字开头 的。所以这点就可以判断是手机号还是用户名
2.用户名和邮箱区别 。可以判断是否有@符号

前端就可以进行判断。如果判断是纯input是纯数字就传给后台type=1 代表去使用手机号登录。剩下2种情况依次...

xiire answered 10 years, 11 months ago

更改用户名的时候,前台客户端不允许 纯数字或者邮箱的格式出现就行。
就像你更改手机或者邮箱,肯定也会去进行验证格式是否正确。

贝利亚小丑 answered 10 years, 11 months ago

所以说 用户名不能是手机号格式。。。

如果允许是手机号格式,那么在修改用户名的时候 也需要在用户名、手机号、邮箱里面进行唯一性检查

尤娜的祈祷士 answered 10 years, 11 months ago

个人观点:客户端需要做的 就是一个电话号码的正则表达式过滤就行,剩下的就是服务器那边的事儿了

懒惰的助手君 answered 10 years, 11 months ago

一般而言,你所说的这种情况

如果用户1用手机号A通过手机号注册了一个账号。然后修改用户名为手机号B。
但是手机号B是用户2的手机号,然后用户2用手机号B通过手机号也注册了一个账号。

在实际的生产环境中是不可能也不允许发生的。

通常来说用户名是绝对不允许使用全数字的, 尤其是在这种可以手机号码登陆的情况下
你就算是允许数字用户名,在修改用户名/手机号码注册的时候,也需要判断是否会出现重复的问题!!!

我不是银发控 answered 10 years, 11 months ago

一般规避情况

  • 一般的用户名,是不允许全数字类型的

  • 即使是允许全数字类型,除非密码是一样的,否则依然可以判定是谁。

具体判定

  • 对于前端的工作来说,大部分是建立 联合正则 来判定是否是符合 手机 | 用户名规则 | 邮箱规则

  • 后台工程师来说,可以判定传来的 类型 ,如你说的情况,使用两种类型,得到数组是两个用户,然后匹配密码,正确的则为登录用户

妄想少年J answered 10 years, 11 months ago

Your Answer