Heim >Backend-Entwicklung >PHP-Tutorial >像segmentfault或知乎这样的注册账号后不激活无法提问是如何实现的?

像segmentfault或知乎这样的注册账号后不激活无法提问是如何实现的?

WBOY
WBOYOriginal
2016-06-06 20:27:251986Durchsuche

是在用户表里加个字段,每次要提问时都查询一下么?

回复内容:

是在用户表里加个字段,每次要提问时都查询一下么?

简单来说,是这样的。
你可以参考Leancloud的默认用户表,看下图,一个字段存邮箱地址(string),一个字段存邮箱是否验证过(bool)。
然后每次提问的时候就去查一下emailVerified字段是否为false。

像segmentfault或知乎这样的注册账号后不激活无法提问是如何实现的?

在提问操作提交之后,先检测该用户的激活字段,True就允许,False就拦截

这就是很基本的权限验证啦,可能是一个bool,当然更加可能是一个整形或者整形中的某个位,猜测 seg 的权限等级用一个一个整形,权限级别可能划分为好多个段,可以参考这里:
http://segmentfault.com/repu?_ea=109887

撰写一个权限控制类
在控制类里面扩展方法

用户状态:0刚注册成功 1已验证 2封号
只有用户状态为1的才可以正常提问

我猜测,很可能就是数据库中的一个字段,status 里面就固定未激活。已激活等等状态,根据状态有一定的权限,然后登录后能做某些事,未激活的一点击提问就提示去绑定邮箱激活吧,
看了楼下的答案,我想到了就是用户登录后会把用户信息存到session中而不是每次用到的时候去查询数据库

肯定是在数据库一个字段表示验证状态,可为整形值或布尔值。
至于读取这个值,估计是放在系统的缓存中直接读取,而不是每次都要重新查询。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn