打包回家 | 报告新错误 | 新建搜索 | 发展路线图 状态:正常开放 | 反馈 | 全部 | 自1.6.4版起关闭

请求编号2765 持久cookie
提交: 2004年11月16日03:58 UTC
发件人: operamail网站上的jj03 分配:
状态: 正常开放 包裹: 身份验证
PHP版本: 4.3.9 操作系统:
路线图: (未分配)    
订阅  


 [2004-11-16 03:58 UTC]operamail dot com上的jj03
描述:------------目前,所有cookie只适用于当前浏览器会话,并且应该有一种可选的方式来使用持久cookie。

评论

 [2005-12-24 15:22 UTC]operamail dot com上的jj04
以下是解决此问题的解决方法:函数setExpire($time,$add=false){@setcookie(session_name(),session_id(),time()+$time);$添加$this->过期+=$time:$this->到期=$time;}
 〔2007-01-18 08:56 UTC〕gserafini在gmaildot.com(加布里埃尔·塞拉菲尼)
这个变通方法实际上有效。我会附议一个请求将这个非常简单的代码修复添加到包中,以便我无需手动调整PEAR代码安装和注意升级它和破坏功能。这个简单的修复程序大大提高了Auth的实用性启用持久登录状态(对用户非常有用)。因此,只需再次投票将解决方案添加到文件中。
 [2007-03-01 15:55 UTC]巴兹多努托比亚斯(托比亚斯·巴兹)
此修复程序在IE7中引入了一个错误(可能还有其他错误)。当使用持久选项登录、注销然后以另一用户身份登录时,应用程序会认为您仍然是另一个用户(使用了错误的sessionid)。我找到的解决方案是终止Auth::logout()中的持久cookie我还包括了原始错误描述中提到的可选性,即在Auth::setExpire()中添加了另一个参数(bool)$persistent我没有太多使用diff的经验,但以下是来自`diff Auth.php newAuth.pph`的输出,其中Auth.php来自CVS(我猜也是在stable中):577a578号>*@param bool是否使用持久cookie581c582个<函数setExpire($time,$add=false)--->函数setExpire($time,$add=false,$persistent=false)583a585587个>if($persistent){>@setcookie($this->_sessionName,session_id(),$this->过期);>}1018a10231025>//取消设置持久cookie>@setcookie($this->_sessionName,false);>
 [2007-03-04 21:18 UTC]巴兹多努托比亚斯(托比亚斯·巴兹)
我似乎使用了一个旧副本,代码中有两个错误(2007-03-01 15:55 UTC):*$this->_sessionName应为session_name()*在setExpire中设置cookie时,第三个参数($this->expire)应该是time()+$this->expire差异:577a578号>*@param bool是否使用持久cookie581c582个<函数setExpire($time,$add=false)--->函数setExpire($time,$add=false,$persistent=false)583a585587个>if($persistent){>@setcookie(session_name(),session_id(),time()+$this->expire);> }1018a10231025>//取消设置持久cookie>@setcookie(session_name(),false);>