laravel怎么处理用户请求,相关操作包括什么
Admin 2022-05-30 群英技术资讯 497 次浏览
1、请求对象Request
Request中包含了用户请求的一些信息,使用该对象首先需要use Illuminate\Http\Request类,之后在参数中传入该对象,
public static function getRequest(Request $request) { //获取请求类型 echo "请求类型" . $request->method() . "<br/>"; //判断请求类型 if ($request->isMethod('POST')){} //请求的url echo "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():
return response()->json($data);
response()方法支持自定义状态码与响应头:
return response($data, 200) ->header('Content-Type', 'text/plain');
response()->download($path,$name)使浏览器下载指定路径的文件:
return response()->download(storage_path('app/photo/test.jpg'), '测试图片.jpg');
3、重定向
通过redirect()函数来实现页面的重定向
//重定向到命名路由,带参数 return redirect()->route('redirect',['name'=>'tory']); //重定向到路由,带一次性Session return redirect('redirect')->with('msg','redirect'); //重定向到controller return redirect()->action('Login@redirect'); //重定向到上一界面 return redirect()->back();
通过with可以将数据通过session传给页面,之后通过Session::get('msg')来获取数据,这也是两个页面之间跳转时数据传递较为安全的方法。
4、中间件
Laravel提供了中间件机制用于对用户的请求request进行过滤,并在返回response之前进行处理。这种机制在nodeJS的express框架中也有,被成为拦截器,对用户的请求先进行过滤再转发到应用Application。中间件文件存放在app/Http/Middleware目录下,其中包括认证、CSRF保护中间价等。比如认证验证中间件会验证用户是否经过认证(如登录),如果用户没有经过认证,中间件会将用户重定向到登录页面,而如果用户已经经过认证,中间件就会允许请求继续往前进入下一步操作。
4.1、定义中间件
在中间件的目录下新建一个php类,用于对活动页面的请求进行拦截,当日期没有到达指定日期之前将对活动的请求重定向到noActivity路由:
namespace App\Http\Middleware; use Closure; class Activity { public function handle($request,Closure $next){ //如果时间小于指定时间则跳转到noActivity路由 if (time()<strtotime('2018-5-12')){ return redirect('noActivity'); }else { //时间符合则执行下一步并把请求request传递给下一步 return $next($request); } } }
后置中间件则是先执行请求操作并返回给$response,在执行完后置操作后再返回
public function handle($request, Closure $next) { $response = $next($request); //先执行请求 // 执行后置中间件操作 return $response; }
注意不可以直接return内容,而是需要通过response()函数返回你的内容
return response(array('status'=>2,'msg'=>"请先登录!"))
4.2、注册路由
中间件的注册在app/Http/kernel.php文件中的Kernel类,其中有三个属性:
'api' => [ 'throttle:60,1', 'bindings', ],
注册中间件需要为中间件指定一个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
//使用HTTP request session echo '<br/>'; $request->session()->put('key','value'); echo $request->session()->get('key'); //使用辅助函数session echo "<br/>"; session(['key2'=>'value2']); echo "session辅助函数".session('key2'); //Session类 Session::put(['key3'=>'val3']); echo Session::get('key3')
获取所有session数组:
$res=Session::all();
删除session:
Session::forget('key'); //删除指定session Session::flushu(); //删除所有session
存入数组:
Session::push('arr','val4'); Session::push('arr','val5'); var_dump(Session::get('arr'));
从session中拿出数据并删除:
$res=Session::pull('arr'); //取出数据并删除
存入一次性数据,存入之后只允许取出一次后就删除:
Session::flash('key5','val5');
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
php返回json数据:1、PHP中的json_encode()用于JSON编码变量,如果功能成功返回JSON数据,则返回FALSE。2、string json_encode ( $value [, $options = 0 ] )。
laravel排序失效的解决办法:1、通过“$query->whereIn(...)”查询数据;2、通过filter过滤数据;3、设置排序好的数据为“$data = $scoutModelsLists;”。
在前面我们了解了应该怎样去绘制图形验证码,那接下来我们一起看一看,在PHP中想要实现图像的缩放和裁剪应该怎样操作。不过在了解图像的缩放和裁剪之前我们先来认识一下下面这两个函数:
杀掉swoole进程的方法:首先在代码里将守护进程改成0;然后输入命令“netstat -apn|grep 端口号”,端口号填写swoole程序使用的端口号;最后使用“kill -9 swoole进程的pid”命令即可。
在本篇文章里小编给大家整理的是一篇关于PHP中最低级别的错误类型总结内容,对此有兴趣的朋友们可以跟着学习下。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008