共计 2883 个字符,预计需要花费 8 分钟才能阅读完成。
一:操作 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');
正文完