用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3402|回复: 15
收起左侧

[已解决] 请教下 登陆超时是怎么实现的

[复制链接]
发表于 2014-12-28 15:35:39 | 显示全部楼层 |阅读模式
PHP复制代码
$userc_id = array(                        'name' => id',
                         '
value' => $userinfo -> id,
 
                            '
expire'=>'3600'
                    );
                    set_cookie($userc_id);
复制代码

设置为3600秒,但是时间到了 仍旧不行,如果还是这个代码,想做个判断是不是超时 怎么做
发表于 2014-12-30 14:11:46 | 显示全部楼层
本帖最后由 Closer 于 2014-12-30 14:42 编辑
ahkxhyl 发表于 2014-12-30 13:59
我用的就是cookie 就是一直在围绕cookie过期问题!!

所以我說了
去檢查 cookie 啊!!!

前面其他開發者就有提了
你沒去檢查 cookie 存不存在、有沒有值
一直跑那段當然只會一直"創建新的 cookie"
然後就永久有效



檢查與設置 CI 的 cookie
PHP复制代码
 
$test = $this->input->cookie('vote'); //取得名稱為 vote 的 cookie 值
if(empty($test)){ //檢查 cookie 有沒有值
  $cookie = array(
    'name' => 'vote',
    'value' => '1',
    'expire' => '5'
  );
  $this->input->set_cookie($cookie); //設置 cookie
}
 
复制代码

因為 expire 設為 5 秒
所以 5 秒過後 $test 取不到值
就再次設置名稱為 vote 的 cookie 值為 1 (維持 5 秒)



下列為 PHP 原生 cookie 使用
PHP复制代码
 
if(empty($_COOKIE["counts"])){ //檢查此 cookie 名稱有沒有值
  setcookie("counts","true",time()+3600); //設置 cookie 3600秒後失效
}
 
复制代码


 

评分

参与人数 1威望 +10 收起 理由
ahkxhyl + 10 很给力!

查看全部评分

发表于 2014-12-30 11:39:53 | 显示全部楼层
本帖最后由 Closer 于 2014-12-30 11:41 编辑
ahkxhyl 发表于 2014-12-30 11:33
登陆时算起!~在用户登陆后更新下登陆的时间 然后 取当前的时间 - 数据库登陆的时间 大于 我设置的8小时  ...

基本上就兩個思路
對了就沒啥問題

1. 用 cookie
先檢查 cookie 有無這個名稱,確認值正確
再看 cookie 有無過期

2. 用 session
登入時紀錄 session
並自行將登陸時間寫入資料庫
每次取用 session 時
檢查資料庫時間是否超時
超時則將指定名稱的 session 刪除

 
发表于 2014-12-30 14:15:06 | 显示全部楼层
ahkxhyl 发表于 2014-12-30 11:33
登陆时算起!~在用户登陆后更新下登陆的时间 然后 取当前的时间 - 数据库登陆的时间 大于 我设置的8小时  ...

这个用 set_cookie 肯定是可以的啊,登录的时候设置一下 cookie,然后就不要再设置它就好了。

 楼主| 发表于 2014-12-29 09:32:24 | 显示全部楼层
{:soso_e117:}求助啊!!
发表于 2014-12-29 09:45:40 | 显示全部楼层
有想過用 session 去控制登陸超時嗎 ?
发表于 2014-12-29 10:16:22 | 显示全部楼层
你只需在登录时设置一次就行了,如果你不断的访问这个文件,就在不断的设置时间,也就不会超时了。
 楼主| 发表于 2014-12-29 19:42:11 | 显示全部楼层
阿呆 发表于 2014-12-29 10:16
你只需在登录时设置一次就行了,如果你不断的访问这个文件,就在不断的设置时间,也就不会超时了。 ...

频繁操作的是 登陆后的页面。。那又影响到登陆超时吗
发表于 2014-12-30 09:20:06 | 显示全部楼层
ahkxhyl 发表于 2014-12-29 19:42
频繁操作的是 登陆后的页面。。那又影响到登陆超时吗

他的意思是
如果你一直重複載入那段程式碼
當然就一直更新 cookie 的時間 = 永不過期
发表于 2014-12-30 10:33:47 | 显示全部楼层
没有理解楼主到底要什么效果?何谓登录超时?
发表于 2014-12-30 10:42:32 | 显示全部楼层
Hex 发表于 2014-12-30 10:33
没有理解楼主到底要什么效果?何谓登录超时?

就是登入時間到了
自動登出

只不過不清楚他到底要的是?
登入起算?還是最後一次訪問起算?
 楼主| 发表于 2014-12-30 11:33:07 | 显示全部楼层
Closer 发表于 2014-12-30 10:42
就是登入時間到了
自動登出

登陆时算起!~在用户登陆后更新下登陆的时间 然后 取当前的时间 - 数据库登陆的时间 大于 我设置的8小时 然后就登陆超时


本版积分规则