搜索

查看: 3169|回复: 11

[PHP] Laravel操作session和cookie的教程详解

[复制链接]
发表于 2023-5-4 17:03:50 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:03:50 3169 11 看全部
目录
  • 一:操作session
  • 1:session配置
  • 2:设置session
  • 3:获取session
  • 4:删除session
  • 5:重新生成 Session ID
  • 二:操作cookie
  • 1:设置cookie
  • 2:获取cookie
  • 3:删除cookie
    一:操作session
    1:session配置
    Session 的配置文件存储在config/session.php中,配置参数有:
    (1):配置session驱动
    'driver' => env('SESSION_DRIVER', 'file'),//#这里表示先读取.env文件的SESSION_DRIVER参数值,如果没有使用file驱动
    laravel自带的驱动
  • file - 将 Session 保存在 指定文件地址 中。
  • cookie - Session 保存在安全加密的 Cookie 中。
  • database - Session 保存在关系型数据库中。
  • memcached / redis - Sessions 保存在其中一个快速且基于缓存的存储系统中。
  • array - Sessions 保存在 PHP 数组中,不会被持久化。
    (2):配置失效时间
    'lifetime' => env('SESSION_LIFETIME', 120),
    (3):使用file驱动时session文件保存地址
    'files' => storage_path('framework/sessions'),
    (4):使用redis驱动时指定 Session 使用哪个 Redis 连接
    'connection' => null,//不修改使用默认的redis
    (5):使用database驱动时将session数据存入的数据库名
    'table' => 'sessions',
    使用database驱动时,在目录命令行执行
    php artisan session:table

    这时候会在database/migrations目录下生成一个创建session数据表的文件
    /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('sessions', function (Blueprint $table) {
                $table->string('id')->unique();
                $table->unsignedBigInteger('user_id')->nullable();
                $table->string('ip_address', 45)->nullable();
                $table->text('user_agent')->nullable();
                $table->text('payload');
                $table->integer('last_activity');
            });
        }

        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('sessions');
        }
    然后执行
    php artisan migrate

    这时候会在数据库中生成一个sessions表,这个表就是保存session数据的表

    2:设置session
    (1):使用Request实例设置session
    $request->session()->put('key', 'value');//设置session
    $request->session()->push('arr','item');//session数组数据中追加数据
    (2):使用全局辅助函数session设置
    session(['key' => 'value']);//设置session
    session()->push('arr','item');//session数组数据中追加数据

    3:获取session
    (1):使用Request实例获取session
    $data = $request->session()->all();//获取所有session
    $value = $request->session()->get('key');//获取指定session
    获取指定session,不存在设置默认值
    $value = $request->session()->get('key', 'default');
    $value = $request->session()->get('key', function () {
        return 'default';
    });
    //确定 Session 中是否存在某个值,该值存在且不为 null,那么 has 方法会返回 true
    if ($request->session()->has('key')) {
        //
    }
    //确定 Session 中是否存在某个值,即使其值为 null,返回 true
    if ($request->session()->exists('key')) {
        //
    }
    (2):使用全局辅助函数session获取
    $value = session('key');
    $value = session('key', 'default');
    $value = session()->get('key')
    $value = session()->get('key','default')
    session()->has('key');
    session()->exists('key');

    4:删除session
    (1):使用Request实例删除session
    //获取到session数据然后删除session
    $value = $request->session()->pull('key', 'default');
    //删除指定session
    $request->session()->forget('key');
    //删除所有session
    $request->session()->flush();
    (2):使用全局辅助函数session删除
    //删除指定session
    session()->forget('name');
    //清空所有session
    session()->flush();

    5:重新生成 Session ID
    (1):使用Request实例重新生成 Session ID
    $request->session()->regenerate();
    (2):使用全局辅助函数session重新生成 Session ID
    session()->regenerate();

    二:操作cookie
    1:设置cookie
    Cookie::queue('test', 'testValue', 10);//设置cookie,test值为testValue,设置cookie时长10分钟
    Cookie::make('cookie_name', 'value', 10);//设置cookie,cookie_name值为value,设置cookie时长10分钟
    Cookie::forever('key','value');//设置cookie,key值为value,永不过期
    注意:如果使用Cookie::make()或Cookie::forever()方法设置cookie的话,渲染视图时不能直接使用:
    return \response()->view('index',$data)->withCookie($cookie);

    2:获取cookie
    Cookie::get('key');

    3:删除cookie
    Cookie::forget('key');
    到此这篇关于Laravel操作session和cookie的教程详解的文章就介绍到这了,更多相关Laravel操作session cookie内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛!
  • 发表于 2023-6-29 16:48:53 | 显示全部楼层
    向往草原403 2023-6-29 16:48:53 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    发表于 2023-6-29 17:52:20 | 显示全部楼层
    麻辣鸡翅 2023-6-29 17:52:20 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    发表于 2023-6-29 23:05:33 | 显示全部楼层
    李志敏 2023-6-29 23:05:33 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    发表于 2023-6-30 01:26:00 | 显示全部楼层
    幸福341 2023-6-30 01:26:00 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    发表于 2023-6-30 11:53:11 | 显示全部楼层
    123456833 2023-6-30 11:53:11 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    发表于 2023-6-30 13:49:21 | 显示全部楼层
    老橡树1 2023-6-30 13:49:21 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    发表于 2023-6-30 15:55:00 | 显示全部楼层
    掌舵的鱼1987 2023-6-30 15:55:00 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    发表于 2023-6-30 18:43:03 | 显示全部楼层
    十二音阶囤 2023-6-30 18:43:03 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    发表于 2023-6-30 22:40:50 | 显示全部楼层
    墙和鸡蛋 2023-6-30 22:40:50 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛。
    • 您可能感兴趣
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| 小黑屋| 知鸟论坛 |网站地图
    本站资源来自互联网用户收集发布,如有侵权请邮件联系处理。 联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表