【发布时间】:2010-12-31 13:13:24
【问题描述】:
我正在尝试实现一个具有“记住我”功能的登录系统。这是我的登录页面:http://pastebin.com/q6iK0Mgy。在此,我尝试使用 session_set_cookie_params() 来延长会话 cookie(PHPSESSIONID) 的到期时间。但它不起作用。
代码中的相关部分:在此内部 if() 循环正在执行,但 session_set_cookie_params('3600') 没有效果。我正在调用 session_name() ,因为它应该是 session_set_cookie_params() 的要求(根据 php 手册中的 cmets 之一)
if ( isset($_POST["submit"]) )
{
session_name() ;
echo "calling before checked " ;
if ( $_POST["remember"] == "on")
{
// extend expiration date of cookie
session_set_cookie_params('3600');
echo "<br/>calling after sessions_set_cookie_params" ;
}
}
require_once("includes/session.php"); //session start ?>
我希望我能够解释我想要做什么。基本上我想做的是延长 session_cookie 的过期时间。我的做法完全错误吗?还有其他方法可以达到同样的效果吗?
谢谢
【问题讨论】:
-
为什么不使用 set_cookie('name','value',3600)?
-
我相信我需要使用会话来实现登录系统,因此需要扩展会话cookie。我错了吗?
-
您是否只在您的开发计算机上测试过这个?因为一个真正的问题是在'localhost'上设置会话cookie不起作用,我认为是由于HTTP协议的一些安全属性。例如,请参阅此示例blog.perplexedlabs.com/2008/12/21/php-sessions-on-localhost,如果域不是本地主机,则将域设置为“.yourdomain”。如果它是 localhost,则域设置为 ''(空字符串),然后它就可以工作了。我不知道这是否是您问题的解决方案,但如果您在 localhost 上进行测试,它是值得测试的。
-
@Johan Awesome :-) 您应该添加评论的扩展作为答案。干杯。
-
也许吧。我只需要再理解一遍! ;) 那是一年多前我写的,我有点忘记这是怎么回事了。
标签: php