乐趣区

关于laravel:laravel操作session和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');
退出移动版