在特定的非活动时间后过期某些cookie

时间:2010-03-05 22:51:53

标签: php cookies

我想知道,我如何在(例如:10分钟)不活动后删除所有某些饼干。

我正致力于保护php项目,其中一个步骤是

我应该删除管理cookie和在php / mysql项目中一定数量的不活动时间之后保存在mysql中的会话

有什么建议!

3 个答案:

答案 0 :(得分:1)

好吧,你永远不应该存储任何重要的cookie,所以你应该只有一个会话ID存储为cookie。

只需将该Cookie设置为在10分钟后过期。将相同的时间戳存储在数据库中。

比如5分钟之后,做你需要做的事情,然后将cookie设置为在10分钟后过期并更新会话

比如说11分钟之后,将不会提供cookie,您可以将用户转发到“未经过身份验证的页面”。

在cron作业或每个页面加载时,删除过去有过期时间的所有会话。

答案 1 :(得分:0)

在cookie和db中保存随机字符串,在db中也保存过期时间.. 当客户端执行请求时从cookie中获取字符串并检查db中的相关过期时间... 如果时间过去会破坏cookie,否则不会......

<?php

  //retrive cookies if exist the hash stored in it.
  //cookie don't exist save the cookie
  if(!$_COOKIE){
     //create a random string in $rnd_string and the expire date in $data
     setcookie("hash", $rnd_string);
     //sql connection here
     //adding rows to db..
     mysql_query("INSERT INTO table (expiredate, hash) VALUES ('".$data."','".$rnd_string."')");
  }
  else{
   //here the code if cookie exist
   $hash=$_COOKIE['hash'];
   //sql connection here
   //retrieving row from db
   $result=mysql_fetch_array(mysql_query("SELECT expiredate FROM table WHERE hash='".$hash."'"));
   //in $result['expiredate'] you'll have the expire date, check this with server time and decide if is session is valid or not...        
  } 

答案 2 :(得分:-1)

难道你不能将每个页面上的cookie设置为10 * 60到期吗?