当前位置: 首页 > 后端技术 > PHP

Laravel操作session和cookie

时间:2023-03-29 18:25:32 PHP

1:操作session1:session配置Session配置文件存放在config/session.php,配置参数为:(1):配置sessiondriver'driver'=>env('SESSION_DRIVER','file'),//#这里的意思是先读取.env文件的SESSION_DRIVER参数值,如果不使用文件驱动驱动laravel自带的驱动?file-将Session保存在指定的文件地址。?Cookies-会话存储在安全加密的cookies中。?数据库——会话存储在关系数据库中。?memcached/redis-会话保存在这些基于缓存的快速存储系统之一中。?array-会话存储在一个PHP数组中,不会持久化。(2):配置过期时间'lifetime'=>env('SESSION_LIFETIME',120),(3):使用文件驱动时,保存session文件地址'files'=>storage_path('framework/sessions'),(4):使用redis驱动时,指定Session使用哪个Redis连接'connection'=>null,//不要修改默认的redis(5):数据库名'table'=>'sessions'使用数据库驱动时存放session数据的地方,使用数据库驱动时,在目录命令行执行phpartisansession:table,会在database/migrations目录下生成创建session数据表的文件/***运行迁移。**@returnvoid*/publicfunctionup(){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');});}/***反转迁移。**@returnvoid*/publicfunctiondown(){Schema::dropIfExists('会话');}然后执行phpartisanmigrate,此时会在数据库中生成一张session表。这个表就是保存session数据的表。2:设置session(一):使用Request实例设置session$request->session()->put('key','value');//设置session$request->session()->push('arr','item');//追加数据到session数组data(2):使用全局辅助函数session设置session(['key'=>'value']);//设置sessionsession()->push('arr','item');//添加到session数组dataData3:getsession(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中是否存在value,value存在且不为null,那么has方法会返回trueif($request->session()->has('key')){//}//判断Session中是否有值,即使它的值为null,返回trueif($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()->存在('键');4:删除session(1):使用Request实例删除session//获取session数据并删除session$value=$request->session()->pull('key','default');//删除指定的session$request->session()->forget('key');//删除所有session$request->session()->flush();(2):使用全局辅助函数sessiondelete//删除指定会话session()->forget('name');//清空所有会话session()->flush();5:重新生成SessionID(一):使用Request实例重新生成SessionID$request->session()->regenerate();(2):使用全局辅助函数session重新生成SessionIDsession()->regenerate();二:操作cookie1:setcookieCookie::queue('test','testValue',10);//设置cookie,测试值为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:获取cookieCookie::get('key');3:删除cookieCookie::forget('key');