zoukankan      html  css  js  c++  java
  • Session 与 Cookie

    一.Session
    系统提供了 Session 管理和操作的完善支持,只需要通过 session()函数完成,该函
    数可以完成 Session 的设置、获取、删除和管理操作。(session是保存在服务器端)
    一般来说,在 ThinkPHP 中不需要手动初始化 session,系统会自动初始化。

    参数名 说明
    id session_id 值
    name  session_name 值
    path session_save_path 值
    prefix  session 本地化空间前缀
    expire  session.gc_maxlifetime 设置值
    domain session.cookie_domain 设置值
    use_cookies  session.use_cookies 设置值
    use_trans_sid  session.use_trans_sid 设置值
    type session 处理类型,支持驱动扩展
    1 //手工初始化
    2 session( array('name'=>'session_id', 'expire'=>3600));
    1 //配置SESSION初始化
    2 SESSION_OPTIONS=> array(
    3 'name'=>'session_id',
    4 'expire'=>3600,
    5 ),

    默认情况下,初始化之后系统会自动启动 session,所以上面初始化的代码了解即可,如果不希望系统自动启动 session
    的话,可以如下设置:

    在 config.php 进行配置:

    1 //设置系统不启用session
    2 'SESSION_AUTO_START' => false,

    在 WeiBo/Home/Controller/UserController.class.php 中对 session 进行使用:

    //注释的是不用时ThinkPHP框架时使用session的格式

    1 //session赋值
    2 session('user', 'Mr.Lee'); //$_SESSION['user'] = 'Mr.Lee';
    1 //获取session值
    2  echo session('user'); //echo $_SESSION['user'];
    1 //session删除
    2 session('user', null); //unset($_SESSION['user']);
    1 //删除所有session
    2 session(null); //$_SESSION=array();
    1 //判断session是否存在,存在则为1,不存在则为空,而不是0
    2  echo session('?user'); //isset($_SESSION['user']);
    1 //暂停session,写入关闭
    2 session('[pause]'); //session_write_close();
    1 //启动session,可开启写入
    2 session('[start]'); //session_start()
    1 //销毁session
    2 session('[destroy]'); //session_destroy();
    1 //重新生成session id,这时服务器端不会覆盖掉原来的session id 而是重新生成一个,这时再启用null和destroy都只是删除现在最新的session id,而不是之前的
    2 session('[regenerate]'); //session_regenerate_id();

    PS:如果在初始化 session 设置的时候传入 prefix 参数或者单独设置了
    SESSION_PREFIX 参数的话,就可以启用本地化 session 管理支持。

    1 //SESSION前缀
    2 'SESSION_PREFIX'=>'think_',

    这时处理的$_SESSION['user']将变成$_SESSION['think_']['user'],而我们在
    处理上没有任何区别。

    二.Cookie

    ThinkPHP 内置了一个 cookie 函数用于支持和简化 Cookie 的相关操作,该函数可以完成
    Cookie 的设置、获取、删除操作。(cookie是保存在客户端)

    注释后面是不用ThinkPHP时的cookie的格式

    1 //cookie赋值
    2 cookie('user', 'Mr.Lee'); //setcookie('user', 'Mr.Lee');
    1 //cookie取值
    2  echo cookie('user'); //echo $_COOKIE['user'];
    1 //cookie赋值,设置过期时间,以秒计时
    2 cookie('user', 'Mr.Lee', 3600);
    1 //cookie赋值,第三参数数组设置过期时间和前缀
    2 cookie('user', 'Lee',  array('expire'=>3600,'prefix'=>'think_'));
    3 cookie('user', 'Mr.Lee', 'expire=3600&prefix=think_');
    1 //cookie取值,带前缀
    2 echo cookie('think_user');

    PS:除了过期和前缀,还有 path(保存路径)和 domain(域)。当然也支持配置文件的
    写法:COOKIE_PREFIX、COOKIE_EXPIRE、COOKIE_PATH、COOKIE_DOMAIN。

    1 //cookie赋值,数组
    2 cookie('user',array('Mr.', 'Lee'));
    1 //cookie删除user
    2 cookie('user',null);
    1 //cookie删除在配置文件里指定前缀的所有
    2 cookie(null);
    1 //cookie删除指定前缀的
    2 cookie(null, 'think_');
  • 相关阅读:
    Top 10 Product Manager Skills To Boost Your Resume In 2021
    大数据知识梳理
    B端产品如何设计权限系统?
    华三盒式交换机MAC、ARP、Route性能表项参数查询
    中了传说中的挖矿病毒
    SqlServer 2019 事务日志传送
    docker中生成的pdf中文是方框的解决方案
    The Live Editor is unable to run in the current system configuration
    2021 面试题大纲
    五分钟搞定Docker安装ElasticSearch
  • 原文地址:https://www.cnblogs.com/jacson/p/4584386.html
Copyright © 2011-2022 走看看