一:操作session
1:session配置
Session 的配置文件存储在config/session.php中,配置参数有:
(1):配置session驱动
1 | 'driver' => env( 'SESSION_DRIVER' , 'file' ), //#这里表示先读取.env文件的SESSION_DRIVER参数值,如果没有使用file驱动 |
laravel自带的驱动
- file – 将 Session 保存在 指定文件地址 中。
- cookie – Session 保存在安全加密的 Cookie 中。
- database – Session 保存在关系型数据库中。
- memcached / redis – Sessions 保存在其中一个快速且基于缓存的存储系统中。
- array – Sessions 保存在 PHP 数组中,不会被持久化。
(2):配置失效时间
1 | 'lifetime' => env( 'SESSION_LIFETIME' , 120), |
(3):使用file驱动时session文件保存地址
1 | 'files' => storage_path( 'framework/sessions' ), |
(4):使用redis驱动时指定 Session 使用哪个 Redis 连接
1 | 'connection' => null, //不修改使用默认的redis |
(5):使用database驱动时将session数据存入的数据库名
1 | 'table' => 'sessions' , |
使用database驱动时,在目录命令行执行
php artisan session:table
这时候会在database/migrations目录下生成一个创建session数据表的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /** * 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
1 2 | $request ->session()->put( 'key' , 'value' ); //设置session $request ->session()->push( 'arr' , 'item' ); //session数组数据中追加数据 |
(2):使用全局辅助函数session设置
1 2 | session([ 'key' => 'value' ]); //设置session session()->push( 'arr' , 'item' ); //session数组数据中追加数据 |
3:获取session
(1):使用Request实例获取session
1 2 | $data = $request ->session()->all(); //获取所有session $value = $request ->session()->get( 'key' ); //获取指定session |
获取指定session,不存在设置默认值
1 2 3 4 5 6 7 8 9 10 11 12 | $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获取
1 2 3 4 5 6 | $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
1 2 3 4 5 6 | //获取到session数据然后删除session $value = $request ->session()->pull( 'key' , 'default' ); //删除指定session $request ->session()->forget( 'key' ); //删除所有session $request ->session()-> flush (); |
(2):使用全局辅助函数session删除
1 2 3 4 | //删除指定session session()->forget( 'name' ); //清空所有session session()-> flush (); |
5:重新生成 Session ID
(1):使用Request实例重新生成 Session ID
1 | $request ->session()->regenerate(); |
(2):使用全局辅助函数session重新生成 Session ID
1 | session()->regenerate(); |
二:操作cookie
1:设置cookie
1 2 3 | 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的话,渲染视图时不能直接使用:
1 | return response()->view( 'index' , $data )->withCookie( $cookie ); |
2:获取cookie
1 | Cookie::get( 'key' ); |
3:删除cookie
1 | Cookie::forget( 'key' ); |
到此这篇关于Laravel操作session和cookie的教程详解的文章就介绍到这了,更多相关Laravel操作session cookie内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!