Thinkphp5学习(30)session,cookie机制

本文详细介绍了ThinkPHP5框架中Session与Cookie的配置及使用方法,包括Session的保存路径、配置项、助手函数等内容,并对Cookie的操作进行了具体演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习内容:
https://www.kancloud.cn/tpshop/thinkphp5/231105

完全开发手册:
https://www.kancloud.cn/manual/thinkphp5/126166

session的保存路径:
查看php.ini ,session.save_path=””

php.ini的位置

php.ini文件的位置

查看php.ini

chrome浏览器查看cookie

firefox浏览器查看session

firefox浏览器查看session

session保持的位置

Chrome浏览器查看session

session_start();

关闭浏览器后,session失效。

==
在thinkphp5中session 的使用。
配置
application/config.php

// 赋值(当前作用域)
Session::set('name','thinkphp');
// 赋值think作用域
Session::set('name','thinkphp2','think2');
// 判断(当前作用域)是否赋值
echo Session::has('name');
//  判断think作用域下面是否赋值
echo Session::has('name','think2');
// 指定当前作用域
Session::prefix('think2');
// 删除当前作用域
Session::delete('name','think');
// 清除session当前作用域
Session::clear();
// 清除think2作用域
Session::clear('think2');
// 赋值(当前作用域)
Session::set('name.item','thinkphp');
// 取值(当前作用域)
Session::get('name.item');
// 删除(当前作用域)
Session::delete('name.item');
$_SESSION=[];

助手函数

public function test38(){
    session('name','thinkphp');
    $this->request->session('name');
    session('name',null);
    session(null);
    session(null,'think');
}
public function test39(){
    session('user_name','thinphp开发团队');
    $this->fetch();    
}

模板输出:
{$Request.session.user_name}

session配置里,type
// 驱动方式 支持redis,memcache,memcached,

原始时,是存在文件里。
可以配置存在redis.

==
cookie的使用。
配置。

cookie的使用:

  public function test43(){
        Cookie::set('name','Tpshop团队',3600);
        //  设置cookie 前缀为think_
        Cookie::set('user_name','TPshop 老师',['prefix'=>'think_','expire'=>3600]);
        // 支持数组
        Cookie::set('Teacher',['zhang','wang','chen','peng']);
        var_dump(Cookie::get('user_name','think_')) ;
        echo '<br/>';
        // 建议 读取cookie数据的方法是能通过Request请求对象的cookie的方法
        echo $this->request->cookie('think_user_name');

        // 删除cookie
        Cookie::delete('user_name');

        // 删除指定前缀的cookie
        Cookie::delete('user_name','think_');

        // 清空指定前缀的cookie
        Cookie::clear('think_');

        // 助手函数
        // 初始化
        cookie(['prefix'=>'think_','expire'=>3600]);
        // 设置
        cookie('name','value123',3600);
        // 判断
        echo cookie('?name');
        // 获取
        echo cookie('name');
        // 删除
        cookie('name',null);
        // 清除
        cookie(null,'think_');

    }
ThinkPHP 5 中,Session 是用于存储用户状态信息的一种机制。如果你发现重新设置 Session 的值后没有生效,可能是以下几个原因: 1. **初始化问题**:确保你在需要设置 Session 之前已经正确初始化了 session。在配置文件 `config.php` 中开启 session,并设置正确的驱动如 'file', 'redis' 等。 ```php // config.php 'app.session' => [ // 使用 file 驱动存储 session 'driver' => 'file', 'save_path' => APP_PATH . 'runtime/session/', ], ``` 2. **清除失效会话**:如果某个会话已经过期,设置新的值将不会起作用。你可以尝试手动清除失效的 session,然后重新设置。 ```php // 清除失效会话 $session = new \think\Session(); $session->clear(); ``` 3. **跨域问题**:如果是在前后端分离或者跨域名的情况下,由于默认的同源策略限制,你需要处理好 cookie 或者设置 CORS 来允许跨域访问。 4. **编码问题**:检查你存储到 session 的数据是否进行了适当的编码,因为 PHP 的 session 数据默认是字符串形式。 5. **刷新问题**:如果你只是更新了 session 的某个键对应的值,而未重新保存整个 session,那么旧的值可能会仍在。要解决这个问题,可以使用 `set()` 函数设置整个 session。 ```php // 设置整个 session $session->set([ 'username' => 'new_value', ]); $session->save(); // 确保保存 ``` 如果以上步骤都试过了还是无效,可能是程序中的其他代码干扰了 session 的操作,建议查看相关的错误日志或打印调试信息查找问题根源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值