Laravel框架处理用户的请求操作详解
Laravel  /  管理员 发布于 7年前   154
本文实例讲述了Laravel框架处理用户的请求操作。分享给大家供大家参考,具体如下: 1、请求对象Request Request中包含了用户请求的一些信息,使用该对象首先需要use Illuminate\Http\Request类,之后在参数中传入该对象, 2、响应对象Response 通过return语句可以对响应作出返回,当return一个数组时,laravel会自动将其转化为JSON格式,如果需要将某个数据转化为JSON可以使用response()->json(): response()方法支持自定义状态码与响应头: response()->download($path,$name)使浏览器下载指定路径的文件: 3、重定向 通过redirect()函数来实现页面的重定向 通过with可以将数据通过session传给页面,之后通过Session::get('msg')来获取数据,这也是两个页面之间跳转时数据传递较为安全的方法。 4、中间件 Laravel提供了中间件机制用于对用户的请求request进行过滤,并在返回response之前进行处理。这种机制在nodeJS的express框架中也有,被成为拦截器,对用户的请求先进行过滤再转发到应用Application。中间件文件存放在app/Http/Middleware目录下,其中包括认证、CSRF保护中间价等。比如认证验证中间件会验证用户是否经过认证(如登录),如果用户没有经过认证,中间件会将用户重定向到登录页面,而如果用户已经经过认证,中间件就会允许请求继续往前进入下一步操作。 4.1、定义中间件 在中间件的目录下新建一个php类,用于对活动页面的请求进行拦截,当日期没有到达指定日期之前将对活动的请求重定向到noActivity路由: 后置中间件则是先执行请求操作并返回给$response,在执行完后置操作后再返回 注意不可以直接return内容,而是需要通过response()函数返回你的内容 4.2、注册路由 中间件的注册在app/Http/kernel.php文件中的Kernel类,其中有三个属性: 注册中间件需要为中间件指定一个key值,用于分配中间件给指定路由时使用,并对应中间件的路径 4.3、使用中间件 在定义路由时通过middleware()方法将中间件指定到某个路由: 5、Session 在PHP中使用$_SESSION来在服务器端储存用户的登录信息等数据,Laravel中不使用PHP默认的session,而是自己实现了一套session机制。session默认使用文件来驱动的,可以在config/session.php中修改其驱动方式为redis或者数据库。 可以通过以下三种方式访问session 获取所有session数组: 删除session: 存入数组: 从session中拿出数据并删除: 存入一次性数据,存入之后只允许取出一次后就删除: 更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。public static function getRequest(Request $request){ //获取请求类型 echo "请求类型" . $request->method() . "
"; //判断请求类型 if ($request->isMethod('POST')){} //请求的url echo "url:" . $request->url(); //判断请求路径是否匹配 if ($request->is('*/index')) echo '这是主页'; //获取请求中的值 if ($request->has('val')) { var_dump($request->input('val')); }}return response()->json($data);
return response($data, 200) ->header('Content-Type', 'text/plain');
return response()->download(storage_path('app/photo/test.jpg'), '测试图片.jpg');
//重定向到命名路由,带参数return redirect()->route('redirect',['name'=>'tory']);//重定向到路由,带一次性Sessionreturn redirect('redirect')->with('msg','redirect');//重定向到controllerreturn redirect()->action('Login@redirect');//重定向到上一界面return redirect()->back();
namespace App\Http\Middleware;use Closure;class Activity{ public function handle($request,Closure $next){ //如果时间小于指定时间则跳转到noActivity路由 if (time()
public function handle($request, Closure $next){ $response = $next($request); //先执行请求 // 执行后置中间件操作 return $response;}
return response(array('status'=>2,'msg'=>"请先登录!"))
'api' => [ 'throttle:60,1', 'bindings',],
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中间件];
Route::get('activity','Login@activity')->middleware('activity');
//使用HTTP request sessionecho '
';$request->session()->put('key','value');echo $request->session()->get('key');//使用辅助函数sessionecho "
";session(['key2'=>'value2']);echo "session辅助函数".session('key2');//Session类Session::put(['key3'=>'val3']);echo Session::get('key3')$res=Session::all();
Session::forget('key'); //删除指定sessionSession::flushu(); //删除所有session
Session::push('arr','val4');Session::push('arr','val5');var_dump(Session::get('arr'));
$res=Session::pull('arr'); //取出数据并删除
Session::flash('key5','val5');
您可能感兴趣的文章:
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号