2010-11-23 48 views
2

到期时间为会议在我的登录脚本我已经把一个复选框,人们可以检查,如果他们想在要保持记录。我有一个名为复选框,“留驻”。设置,按登录

现在,问题是,当用户直接进入登录页面的索引时,会话已经设置(并且在“会话结束”时 - 或者浏览器关闭时)到期。所以,让我们说你标志着“记住我的登录”框中,浏览网页,然后关闭浏览器,然后回去 - 你会不会仍然可以登录,因为设置会话一生没有工作,因为会话始终通过索引脚本被设置为没有特定的生命周期。因为不是每个人都希望在所有的时间被记录下来,我真的不能设置“session_set_cookie_parameters”为“从不”到期之前,我利用在session_start()(这就是为什么session_set_cookie_params在我的脚本中使用的session_start后()(我我不确定这真的有效))。

因此,对于指数的脚本,我只是使用session_start();并检查是否有“用户名”的值并通过登录重定向用户。 而对于动作脚本:

<?php 
session_start(); 
if(isset($_POST['stayin'])){ // In case they want to be kept logged in. 
session_set_cookie_params(999999999,"/path"); 
} 
?> 

我使用session_start()在每个脚本的最顶端。 使用PHP版本4.4.9。

回答

0

AFAIK session_set_cookie_params()仅修改了该脚本运行时间会话cookie长度(见http://www.php.net/manual/en/function.session-set-cookie-params.php)。只有这样,才能永久地改变它是修改php.ini文件中的条目,但这种情况将会改变所有会话有一个长期超时这是不是你想要的任何东西。是使用客户端cookie的一个选项,而不是使用服务器端会话?如果是这样,您可以根据用户是否勾选复选框,使用setcookie()单独设置cookie的使用寿命。

<?php 
if(isset($_POST['stayin'])){ // In case they want to be kept logged in. 
    setcookie('logincookie', true, 999999999, '/path'); 
} 
?> 
0

最佳方式会话cookie过期时间怎么设置是:

$cookie = session_get_cookie_params(); 
session_set_cookie_params(2851200, $cookie['path'], $cookie['domain'], 
$cookie['secure']);