seesion好奇怪

seesion好奇怪

login的时候我这样处理seesion

$_SESSION['user_name'] = md5($userName);

然后判断了一下

if(isset($_SESSION['user_name']) && !empty($_SESSION['user_name'])){
        header('Location:index.php');
      }

这样是可以实现登录后再访问登录页面跳转首页的,但是我在商品发布页(add.php)加入了以下代码:

var_dump($_SESSION['user_name']);
    if(!isset($_SESSION['user_name'])||empty($_SESSION['user_name'])){
    header('Loction:login.php');
}

var_dump的结果可以看出$_SESSION['user_name']是有值的,接下来,我关闭浏览器重新访问add.php还是可以访问,var_dump也有值add.php依然可以访问;

再接下来我想到了销毁seesion,使用销毁

session_destroy();

或者先重置session再销毁以后

$_SESSION = array();
session_destroy();

此时,add.php的var_dump没有值了,但是并没有跳转到首页

两个问题:

  1. 为什么关闭浏览器session还有

  2. 为什么销毁了seesion不跳转

注:以上测试在chrome和firefox里都测试了,结果一致

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕查理 2018-07-11 14:33:20

您好,1.您是在什么时候销毁的session?以及什么情况下想让其返回首页?一般销毁session是在用户退出登录时。

2.关了浏览器session仍然存在,因为session是储存在服务器端的,而服务器是无法检测是否关掉浏览器,因此要在退出时销毁session。

祝学习愉快!

  • 提问者 蛋切刀 #1
    嗯,就是在写注销操作; 视频里的老师怎么关闭了浏览器就可以退出了呢? 原生商城项目,第1-4视频,看12:55秒以后
    2018-07-11 14:37:25
  • 好帮手慕查理 回复 提问者 蛋切刀 #2
    您好,课程中老师说session与cookie是有关的,cookie是存在浏览器中的。由于session是基于Cookie的。浏览器发起请求会携带sessionId到服务器,服务器根据这个id来判读当前访问的是哪个session。然而浏览器被关闭后由于浏览器的Cookie文件还未设置MaxAge值,所以在此时浏览器的Cookie是会话级别的,是存在浏览器的内存中,当浏览器被关闭浏览器的内存被释放,临时文件被清除,这时的Cookie也随之销毁,则当前这个请求中被没有之前的那个sessionId值,服务器就当时第一次访问,给浏览器创建一个新的session值并返回一个null;您可以单独使用session_start(); $_SESSION['user'] = 'imooc'; var_dump($_SESSION['user']);测试一下您的浏览器(第二次访问时,注释掉设置session的语句),浏览器关闭是否会无法获取到session。
    2018-07-11 15:07:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师