2013-04-28 68 views
0

我试图让我的登录会话持续更长时间,以便人们不会太早从我的网站登出。例如,撰写博客文章并在他们提交时丢失,因为php过期了他们的cookie。创建持久的php登录cookie会话

理想情况下,我想给他们说一个2小时的会话,他们不会被注销,每次加载页面时都会刷新(下面的代码片段位于每个安全页面的标题之前)

这就是我正在尝试的,但它提出了setcookie()的错误说有零除?我在这里做错了什么?

//How long sessions last 
$hours = 2; 

// php.ini setting required for session timeout. 
ini_set('session.gc_maxlifetime',$hours*60*60); 
ini_set('session.gc_probability',1); 
ini_set('session.gc_divisor',1); 

//Set the session parameters and start session 
$sessionCookieExpireTime=$hours*60*60; 
session_set_cookie_params($sessionCookieExpireTime); 
session_start(); 

// Reset the expiration time upon page load 
if (isset($_COOKIE[session_name()])) 
{ 
    setcookie(session_name(), $_COOKIE[session_name()], time() + $sessionCookieExpireTime, "/"); 
} 

编辑:现在工作的问题是非标准引号和撇号。以防万一任何人复制此代码并使用它。上面的代码现在感谢!

+0

它必须是别的东西,因为当我复制并粘贴该代码时,我得不到任何错误。我确实必须替换所有的引号/撇号,因为它们不是正常的PHP引号/撇号的 – 2013-04-28 16:44:02

+0

请分享您确切的错误消息。 – 2013-04-28 16:46:44

+0

好吧,这是它 - 我没有意识到,有复制片段时可能潜入的不同引号和撇号!谢谢! – 2013-04-28 16:49:03

回答

1

如果你想,你可以当你的cookie就过期了补充一点:

time()+60*60*24*30 

这等于是说,饼干在60secs,60分钟,24小时等到期。你还应该在这里查看关于cookie的教程:http://www.w3schools.com/php/php_cookies.asp