2010-11-07 40 views

回答

1

您必须将其转换为cookie,因为在浏览器关闭时会自动删除会话。见this

+0

看到这个http://www.captain.at/howto-php-sessions.php。无论设置了多久,浏览器关闭后会话都会被销毁。这使它与cookies不同。如果我再犯错,请纠正我,并引用您的来源。 – Skaty 2010-11-07 13:14:44

+0

是的,Skaty说的是要走的路。您需要将会话数据转换为Cookie数据。 – Ashok 2010-11-09 08:13:05

+1

技术上它已经是一个cookie了。当浏览器窗口关闭时,它会被丢弃,因为cookie的生存期为0秒。 – sholsinger 2010-11-11 00:36:57

0

当浏览器关闭时Cookie不会被破坏。

1

设置$this->Session->cookieLifeTime = $timeToLive;,其中$timeToLive是您希望会话持续的秒数。这是总长度,所以如果浏览器窗口关闭,它不会被删除,但请注意,从浏览器关闭时开始,它是而非

+0

记录在哪里? – sholsinger 2010-11-11 00:29:55

+0

@sholsinger - 在我的答案中点击示例代码行。 – Iiridayn 2010-11-12 19:45:12

+0

我不得不说,这可能是最容易实现的。道具,michaelc。这并不意味着我认为与源文件的链接是“文档”。事实是,CakePHP的文档没有列出会话类的公共属性,这是不幸的。 – sholsinger 2010-11-12 22:23:26

2

似乎有办法通过重写的配置值增加会话的生存时间。 (在PHP级别 - 通过CakePHP Manual)。使用下面的代码,您可以将0更改为希望会话生存的秒数。

2周
// Cookie is now destroyed when browser is closed, doesn't 
// persist for days as it does by default for security 
// low and medium 
ini_set('session.cookie_lifetime', 0); 

实施例:

ini_set('session.cookie_lifetime', 60 * 60 * 24 * 14); 

上面代码段将被写入到在app/config创建的配置文件。为了让CakePHP的阅读在初始化该文件添加以下内容app/config/core.php

Configure::write('Session.save','my_session'); 

哪里my_session是您的配置文件的名称。

相关问题