想到一个奇怪问题

2020-11-30 01:09:47 +08:00
 risky

有的网站两个登录框,第一个可以填写账户名 /邮箱 /手机号,第二个填写密码

那如果有一个账户的手机号跟另一个账户的名称一样,登录得怎么处理,注册的时候直接限制用户名长度么

2744 次点击
所在节点    程序员
24 条回复
zhuzhibin
2020-11-30 01:12:26 +08:00
很多种做法吧 通常用户名应该是数字字母符合什么的组合
1if5ty3
2020-11-30 01:22:29 +08:00
限制用户名不能用纯数字呗
thedrwu
2020-11-30 05:51:56 +08:00
楼主这头像
xuanbg
2020-11-30 07:45:35 +08:00
注册的时候判断数据库里面有没有用户名 /手机号 /邮箱等等任何可以用来登录的字段是否存在。
baobao1270
2020-11-30 08:48:00 +08:00
这个问题是存在的……我百度的用户名就是一个已经销卡的手机号,每次登录百度都会被认为是手机号,提示手机号不存在。最后这能申诉+绑定邮箱,用邮箱登录。

注册的时候可以不允许使用 11 位数字注册。
@xuanbg #4 的方法,没有考虑到用户更换手机号的情况。
zmQAQ
2020-11-30 09:06:53 +08:00
注册时候查询验证数据库是否有相同字段,登陆的时候直接查询你的账户就 OK 了
risky
2020-11-30 09:51:40 +08:00
@zmQAQ 感觉必须要限制账户名不能跟手机号格式一样,不然就会出现 #5 的问题了
cmdOptionKana
2020-11-30 09:58:31 +08:00
这个设计有根本性问题,其实如果允许邮箱和手机号在同一栏自由填写,就不应该允许账户名在同一栏自由填写。

先让填邮箱或手机,自动生成一个随机用户名,后续允许用户改名就可以了,注册过程照样简洁,用户名也照样可以自定义。
shaozelin030405
2020-11-30 09:59:53 +08:00
禁止拿手机号做用户名,解决
xuanbg
2020-11-30 10:01:01 +08:00
@baobao1270 你悄悄更换手机号直接登录(登录注册合一的情况),而不是登录以前的号进行更换手机号操作。这个问题无解的呀。
yaphets666
2020-11-30 10:02:21 +08:00
我觉得不管是拿什么作为账户名 账户名在不同种类的间都应该是唯一的
cmdOptionKana
2020-11-30 10:03:33 +08:00
注册时先给随机用户名,修改用户名时不允许是纯数字或有 @ ,后续登录的时候就不可能重复
no1xsyzy
2020-11-30 10:08:37 +08:00
@xuanbg 想象一下,假定存在一个手机号 X{11}
首先,1. 有人注册了账号 Y ; 2. 有人注册了账号 X{11}; 3. Y 绑定了手机号 X{11}
这个过程中,只有 3. 的位置能够判断,但你要不允许 Y 绑定?还是 Y 绑定完成后也不允许手机号?

最核心的方案还是除了通用框以外,可以明确指定我输入的是(手机号 / 邮箱 / 账号)
就算采用比较隐蔽的比如 tel::X{11} mail::a@example.com account::X{11} 的区分也行。
lixiaolin
2020-11-30 10:31:35 +08:00
限制用户名不能跟手机号格式一样吧
takemeaway
2020-11-30 10:48:02 +08:00
@no1xsyzy 一般是手机号优先,如果同时存在手机号和用户名一样但是账号不同的情况,账号那个是登录不上的,需要用邮箱登录,然后绑定其他手机号。
所以存在 5L 的情况。
nnnToTnnn
2020-11-30 11:32:30 +08:00
@baobao1270
@takemeaway

注销的逻辑难道不应该是这样的吗?


请输入你要注销的用户

用户名: xxxxxx
密码: xxxxxxx

请输入手机验证码 or 邮箱验证码


通过用户名 + 密码 可以拿到用户 id 在通过用户 id 来注销用户
nnnToTnnn
2020-11-30 11:34:36 +08:00
@nnnToTnnn 为什么会存在 5L 的问题,我表示对百度的技术深深的怀疑
risky
2020-11-30 12:08:34 +08:00
ggbdpq
2020-11-30 12:09:26 +08:00
"一个账户的手机号跟另一个账户的名称一样"你让别人登录注册的时候就不应该存在这个问题,用户名不都是唯一的。吗?
ddosakura
2020-11-30 12:34:35 +08:00
@nnnToTnnn 应该是历史遗留问题吧,一起不流行手机号的时代没考虑这个

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/730432

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX