class/user.php
先来看hu60wap6的数据表结构吧,这是建表语句:
CREATE TABLE `hu60_user` (
`uid` int PRIMARY KEY AUTO_INCREMENT,
`name` varchar(16) NOT NULL UNIQUE,
`pass` char(32) NOT NULL,
`sid` varchar(64) NOT NULL,
`safety` BLOB,
`regtime` int NOT NULL,
`sidtime` int NOT NULL,
`acctime` int NOT NULL,
`setinfo` BLOB,
)
解释一下每项是什么:
uid是一个从1开始自动递增的整数,它是用户的唯一编号。
name是用户名,规定只能是汉字(不包括字符)、英文字母、数字、下划线(_)和减号(-),和现在一样。
pass是用户密码,为了防止破解,hu60wap6使用复杂的密钥和密码一起进行md5运算得到md5密码并保存,保证不太可能通过查md5数据库得到密码原文。
safety是一个通过serialize处理后保存到数据库内的PHP数组。它是和用户的密码找回相关的信息。默认情况下,用户需要设置3个密码保护问题,它们保存在safety里。但它是可扩展的(毕竟是一个数组),我们可以添加安全邮箱等更多安全措施。而且,是否要在注册时强制用户设置密保也值得讨论。
regtime是用户注册时间戳。使用int存储或许会遇到Y2K38溢出问题,大家讨论下要不要改成bigint,或者等2038年再说?(那时还有hu60wap6吗?)
sidtime记录了用户的sid生成时间,它与config/system.php里的DEFAULT_LOGIN_TIMEOUT一起决定用户的sid重新生成时间(自动掉线时间),默认是一月一次。
acctime记录了用户的最后访问时间,它用来实现判断用户是否在线。
setinfo和safety一样是一个数组,它保存用户的其他信息,比如签名、联系方式等,还有各种设置,比如页面风格等。还没有决定要保存些什么。
sid是用户的登陆信息,大家都知道。