题
我刚刚看到一篇文章的地方。他们使用SESSION_ID商店为每一个成功登录的用户在临时表中的登录和退出时间。这意味着,一旦会议摧毁了表将被删除。那么,为什么他们创建表??
是否有任何用途的临时表的?和为什么必须使用的session_id ??
哪些人在登录的session_id的使用和注销临时表?? (I只是不能想出SESSION_ID,登录和注销时间在临时表中的连接和使用。)
解决方案
代替使用第二表的为什么不使用用户表来存储该信息?
用户表:
CREATE TABLE `Users` (
`Id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`Username` VARCHAR(32) NOT NULL,
`Password` CHAR(32) NOT NULL,
`Login` TIMESTAMP DEFAULT 0,
`Logout` TIMESTAMP DEFAULT 0,
PRIMARY KEY (`Id`),
UNIQUE KEY (`Username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
现在,当在商店的用户登录他的在$ _SESSION变量ID和更新登录时间戳:
UPDATE `Users` SET `Login` = NOW() WHERE `Id` = id_stored_in_session;
和然后当他从上方但Logout
注销使用同一命令
其他提示
“临时表是仅可见于当前连接,并且当连接被关闭时自动删除”。 (原始)
所以临时表绝对是一个不走。我会投给克里斯的解决方案。
我敢打赌,他们正在使用临时表来存储会话信息(使用session_set_save_handler
),这是很好的:会话信息变化非常快,通常,临时表是完美的解决方案等。
也许你混淆临时记忆?存储器表不存储在你的硬盘和数据丢失在重新启动时,这是用于feasable会话信息
会话ID的都非常的Userful识别用户是否已登录还是不行。
只要创建帐号,会话-id,recentaccesstime登录表。
在以往的用户请求新页面检查会议-ID和用户名是否匹配与否。
如果他们匹配只需更新recentaccesstime。
如果该recentaccesstime> 60分钟就可以设置用户注销我们的网站,并从登录表中删除他的实体。
不隶属于 StackOverflow