现在很多网站可以同时使用 用户名/邮箱/手机号 方式登录。
假如:
用户A: 用户名:aaa 手机号:13888888888
用户B: 用户名:13888888888 手机号:139********
而恰巧,两个用户的密码也设置的相同,如123456
(几率还真不小,很多用户密码都是123456之类。。。)
那么此时某用户使用 13888888888+123456登录。那么问题来了:
此时数据肯定是匹配的,可以通过登录认证,那么当前登录用户算哪一个呢?
解决这类问题,似乎应该在注册时就应该进行限制吧;若真的已有数据,在登录时,应该检测是否有这种手机重复的情况,有重复就应该强制用账号名登录。。。
解决这个问题的方案就是使用同一个表,把用户名、手机号、邮箱统一为帐户字段。
不过,这样做其实不是很好,另外一个可行的方案就是限制用户名不能以数字开头。。。或者验证用户名内容是否刚好与手机号兼容(还不如限制不以数字开头)。
你可以去那些网站使用手机号注册普通用户名看看。(呵呵,我没去试过,有结果给个消息哦)
注册时需查重。
如果你在查询数据库信息的时候,使用select top 1 * from......where +判断条件 应该获取的是从数据库查找出来的第一个用户,如果是select * from......where +判断条件 可能会出现错误,因为手机号码也可能会重复,以前使用的,现在不用了。登陆判断的时候避免使用重复数据的字段,可以使用用户名+密码,使用Session或者Cookie,尽量保存少量数据。