我用如下代码实现验证登录session_start();
if(!isset($_SESSION['uid'])){
header("Location:login.htm");
exit();
}login页面的后台代码是这样的if($name=="name" && $pwd=="pwd"){
session_start();
$_SESSION['uid']=$name;
header("Location:test.php");
exit;
}
echo "用户名密码错";每次我关闭浏览器后过一会重新登录,发现根本不需要登录
我希望实现只要关闭浏览器再打开网页就必须重新登录,不管关闭多长时间
搜索了一下,大概是说把php.ini里面session.gc_maxlifetime改小一点就可以,我改成5重启后,关闭浏览器等了十几分钟还是自动登录了,根本没有让输用户名和密码,为什么?
另外session.gc_maxlifetime时间是从什么时候开始计算的?从我打开网页还是从我关闭网页?
if(!isset($_SESSION['uid'])){
header("Location:login.htm");
exit();
}login页面的后台代码是这样的if($name=="name" && $pwd=="pwd"){
session_start();
$_SESSION['uid']=$name;
header("Location:test.php");
exit;
}
echo "用户名密码错";每次我关闭浏览器后过一会重新登录,发现根本不需要登录
我希望实现只要关闭浏览器再打开网页就必须重新登录,不管关闭多长时间
搜索了一下,大概是说把php.ini里面session.gc_maxlifetime改小一点就可以,我改成5重启后,关闭浏览器等了十几分钟还是自动登录了,根本没有让输用户名和密码,为什么?
另外session.gc_maxlifetime时间是从什么时候开始计算的?从我打开网页还是从我关闭网页?
不太明白楼主$_SESSION['uid']是什么意思,对Session的了解也只是知道这个每次用session_start();session_id();会生成一个ID,关闭浏览器再打开ID会变。楼主何不试试Cookie方式呢?
https://bitbucket.org/snippets/Darkwish/K8qbp
这个是我今天用Cookie写的登录验证,Cookie是写进内存里的,因此关闭浏览器会自动释放Cookie
不太明白楼主$_SESSION['uid']是什么意思,对Session的了解也只是知道这个每次用session_start();session_id();会生成一个ID,关闭浏览器再打开ID会变。楼主何不试试Cookie方式呢?
https://bitbucket.org/snippets/Darkwish/K8qbp
这个是我今天用Cookie写的登录验证,Cookie是写进内存里的,因此关闭浏览器会自动释放Cookie!
把session.gc_maxlifetime的值改回去吧。重启apache 之后再试试看
session.gc_maxlifetime虽然表示session文件的过期时间,但是并不是说一旦过期立马删除。这取决于session的垃圾回收器的触发机制,即session.gc_disvisor和session.gc_probability, 后者/前者为触发的概率 如1/100 则表示用户操作100次session,会有1次机会启动垃圾回收器。
正确方法是 session.Cookie_lifetime设置为0,表示客户端存贮SessionID的Cookie为会话Cookie.浏览器关闭时,Cookie值注销.
配置完成后重启apache,如果已经登陆了,那么手动删除浏览器Cookie和服务器的session。
session_start();
$_SESSION = array();//将session文件里的数据清空
setcookie( session_name(),'',time()-10); //也可以到浏览器找到cookie选项手动删除
session_destory();//删除session文件
清理完之后将会有楼主满意的效果。