仲夏 发表于 2010-1-21 23:55:45

如何实现用户登录

本帖最后由 仲夏 于 2010-1-23 14:37 编辑

初学,在一些基础的地方没有概念…

应该如何实现用户登录呢?用户注册我已经做好了,登录页面提交的数据我也处理好了(从数据库中对比用户名和密码),下一步应该如何记录用户的登录状态呢?用cookie?session?
麻烦给一下思路吧,最好有个简单的代码例子…

ivanlw 发表于 2010-1-22 00:57:46

参见
http://codeigniter.org.cn/forums/viewthread.php?action=printable&tid=4094中的
“4. [菜鸟也CI]一切从留言板开始 全程跟进”
第二节吧,用到第三方类库kndb session,论坛中很多人说CI的session不好用或者出问题~这个教程应该很清楚了!

仲夏 发表于 2010-1-22 11:51:18

依旧不是很明白…
我把登录成功的用户名、密码都保存在session里了,但我没法动态自定义保存时间(自动登录),应该怎么做呢?莫非还要再将数据存到cookie里吗?

Hex 发表于 2010-1-22 12:07:31

如果你要自动登陆,也就是说用户关闭浏览器,下次访问还是登陆状态(比如常见的记住密码30天),就必须存到 cookie 中。

ivanlw 发表于 2010-1-22 12:27:36

回复 4# Hex


    如果想在网站各个页面都判断一下用户是否有登陆,是不是每个页面都要读一下cookie呢?这样子页面多了很麻烦……有没有简单一点的办法?

仲夏 发表于 2010-1-22 13:14:44

我现在在每次用户登录的时候都将用户名写入session和cookie(写入cookie前先加密),然后在载入每个页面时都通过辅助函数来对比session和cookie中的用户名,若相同则为已登录。同时通过cookie的自动过期来实现“自动登录”的时长。
这样做算安全吗?

visvoy 发表于 2010-1-22 14:06:29

这是权限控制类的东东,楼主可以参考用CI写的博客或CMS的用户权限源码,代码区置顶有开源项目下载地址

Hex 发表于 2010-1-22 14:18:53

楼上说的没错,参考一下。

cookie 不用每次都验证,用户第一次来先看 cookie,cookie 有就执行登陆操作,以后就判断 session 就行了。
当然是每个需要判断用户的控制器都要加代码了,当然你可以做一个 MY_Controller 来统一处理,就看你对 CI 有多了解了。

仲夏 发表于 2010-1-22 16:19:02

感谢楼上两位~
我现在的做法是,不用cookie了,用户登录时写入session,然后通过设定 $this->session->sess_expiration 来指定session过期时间,从而实现设定“自动登录”的保存时间。以后每次页面载入时都判断一次is_login,这个判断只需要读session就行了。
这样做应该OK吧?

Hex 发表于 2010-1-22 16:20:27

一般来说 session 在关闭浏览器就应该失效。
页: [1] 2 3
查看完整版本: 如何实现用户登录