• PHP中session_start 函数详解使用方法


    一、官方 session_status() 返回值为:

     

    • PHP_SESSION_DISABLED 会话是被禁用的。
    • PHP_SESSION_NONE 会话是启用的,但不存在当前会话。
    • PHP_SESSION_ACTIVE 会话是启用的,而且存在当前会话。

     

    session_status()

     

    二、尝试打印var_dump(session_status()); 值总为int 1

    与官方描述不一样,google it,当打印时,会显示如此:

     

    1.  
      0 ----> PHP_SESSION_DISABLED if sessions are disabled.
    2.  
      1 ----> PHP_SESSION_NONE if sessions are enabled, but none exists.
    3.  
      2 ----> PHP_SESSION_ACTIVE if sessions are enabled, and one exists.

    参考

     

     

    三、思考何时返回 0 或 2 。

    1、尝试加上session_start(),打印出了2。

    session_start();

    var_dump(session_status()); // int 2

    说明:PHP_SESSION_ACTIVE 是指使用了session_start() 启动新会话或者重用现有会话.

    2、尝试在session_start() 后使用 session_destroy(),期望得到0。

     

    session_start();

    session_destroy();

    var_dump(session_status()); // int 1

    说明:结果输入1,证明,现在session状态为 “PHP_SESSION_NONE 会话是启用的,但不存在当前会话”。

    3、于是思考,当session不能用时状态才为 “PHP_SESSION_DISABLED 会话是被禁用的”,即返回0。

    于是修改php.ini session.save_handler = 'cached',重启php,此时,有个warning,同时,返回0;

    说明:只有当session 无法使用时,session_status 才返回 0.

    ————————————————————————————————————————————————————————

    总结,要判断是否需要使session_start()函数,可以这样:

    if(session_status !== PHP_SESSION_ACTIVE){

    session_start();

    }

     

    if(session_status !== 2){

    session_start();

    }

  • 相关阅读:
    git 服务器的搭建
    两种读写配置文件的方案(app.config与web.config通用)
    实现UniqueAttribute唯一性约束-优化版
    实现UniqueAttribute唯一性约束
    WCF会话(Session)与实例(Instance)管理
    WCF实现方法重载
    WCF序列化
    WCF服务创建与使用(双工模式)
    WCF服务创建与使用(请求应答模式)
    我的WCF学习与强化系列文章
  • 原文地址:https://www.cnblogs.com/hehexu/p/9304345.html
Copyright © 2020-2023  润新知