如何使用Laravel框架处理用户请求(laravel,开发技术)

时间:2024-05-03 07:18:16 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

1、请求对象Request

Request中包含了用户请求的一些信息,使用该对象首先需要use Illuminate\Http\Request类,之后在参数中传入该对象,

publicstaticfunctiongetRequest(Request$request){//获取请求类型echo"请求类型".$request->method()."<br/>";//判断请求类型if($request->isMethod('POST')){}//请求的urlecho"url:".$request->url();//判断请求路径是否匹配if($request->is('*/index'))echo'这是主页';//获取请求中的值if($request->has('val')){var_dump($request->input('val'));}}

2、响应对象Response

通过return语句可以对响应作出返回,当return一个数组时,laravel会自动将其转化为JSON格式,如果需要将某个数据转化为JSON可以使用response()->json():

returnresponse()->json($data);

response()方法支持自定义状态码与响应头:

returnresponse($data,200)->header('Content-Type','text/plain');

response()->download($path,$name)使浏览器下载指定路径的文件:

returnresponse()->download(storage_path('app/photo/test.jpg'),'测试图片.jpg');

3、重定向

通过redirect()函数来实现页面的重定向

//重定向到命名路由,带参数returnredirect()->route('redirect',['name'=>'tory']);//重定向到路由,带一次性Sessionreturnredirect('redirect')->with('msg','redirect');//重定向到controllerreturnredirect()->action('Login@redirect');//重定向到上一界面returnredirect()->back();

通过with可以将数据通过session传给页面,之后通过Session::get('msg')来获取数据,这也是两个页面之间跳转时数据传递较为安全的方法。

4、中间件

Laravel提供了中间件机制用于对用户的请求request进行过滤,并在返回response之前进行处理。这种机制在nodeJS的express框架中也有,被成为拦截器,对用户的请求先进行过滤再转发到应用Application。中间件文件存放在app/Http/Middleware目录下,其中包括认证、CSRF保护中间价等。比如认证验证中间件会验证用户是否经过认证(如登录),如果用户没有经过认证,中间件会将用户重定向到登录页面,而如果用户已经经过认证,中间件就会允许请求继续往前进入下一步操作。

如何使用Laravel框架处理用户请求

4.1、定义中间件

在中间件的目录下新建一个php类,用于对活动页面的请求进行拦截,当日期没有到达指定日期之前将对活动的请求重定向到noActivity路由:

namespaceApp\Http\Middleware;useClosure;classActivity{publicfunctionhandle($request,Closure$next){//如果时间小于指定时间则跳转到noActivity路由if(time()<strtotime('2018-5-12')){returnredirect('noActivity');}else{//时间符合则执行下一步并把请求request传递给下一步return$next($request);}}}

后置中间件则是先执行请求操作并返回给$response,在执行完后置操作后再返回

publicfunctionhandle($request,Closure$next){$response=$next($request);//先执行请求//执行后置中间件操作return$response;}

注意不可以直接return内容,而是需要通过response()函数返回你的内容

returnresponse(array('status'=>2,'msg'=>"请先登录!"))

4.2、注册路由

中间件的注册在app/Http/kernel.php文件中的Kernel类,其中有三个属性:

  • $middleware属性用于定义全局中间件,每个http请求都需要通过全局中间件。

  • $middlewareGroups属性用于定义中间件组,比如你需要给某个路由指定多个中间件,分别指定太过麻烦,你可以把它们放在一个中间件组中。例如中间件组api包括两个中间件throttle:60,1与bindings

'api'=>['throttle:60,1','bindings',],
  • $routeMiddleware属性用于注册分配中间件给指定的路由。

注册中间件需要为中间件指定一个key值,用于分配中间件给指定路由时使用,并对应中间件的路径

protected$routeMiddleware=['auth'=>\Illuminate\Auth\Middleware\Authenticate::class,'auth.basic'=>\Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,'bindings'=>\Illuminate\Routing\Middleware\SubstituteBindings::class,'can'=>\Illuminate\Auth\Middleware\Authorize::class,'guest'=>\App\Http\Middleware\RedirectIfAuthenticated::class,'throttle'=>\Illuminate\Routing\Middleware\ThrottleRequests::class,'activity'=>\App\Http\Middleware\Activity::class//注册activity中间件];

4.3、使用中间件

在定义路由时通过middleware()方法将中间件指定到某个路由:

Route::get('activity','Login@activity')->middleware('activity');

5、Session

在PHP中使用$_SESSION来在服务器端储存用户的登录信息等数据,Laravel中不使用PHP默认的session,而是自己实现了一套session机制。session默认使用文件来驱动的,可以在config/session.php中修改其驱动方式为redis或者数据库。

可以通过以下三种方式访问session

  • 通过request对象访问session

  • 通过辅助函数session()访问

  • 通过Session类来访问

//使用HTTPrequestsessionecho'<br/>';$request->session()->put('key','value');echo$request->session()->get('key');//使用辅助函数sessionecho"<br/>";session(['key2'=>'value2']);echo"session辅助函数".session('key2');//Session类Session::put(['key3'=>'val3']);echoSession::get('key3')

获取所有session数组:

$res=Session::all();

删除session:

Session::forget('key');//删除指定sessionSession::flushu();//删除所有session

存入数组:

Session::push('arr','val4');Session::push('arr','val5');var_dump(Session::get('arr'));

从session中拿出数据并删除:

$res=Session::pull('arr');//取出数据并删除

存入一次性数据,存入之后只允许取出一次后就删除:

Session::flash('key5','val5');
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:如何使用Laravel框架处理用户请求的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何在php中使用laravel实现依赖注入下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18