我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Laravel如何处理用户请求

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Laravel如何处理用户请求

这篇文章主要介绍“Laravel如何处理用户请求”,在日常操作中,相信很多人在Laravel如何处理用户请求问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Laravel如何处理用户请求”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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']);//重定向到路由,带一次性Sessionreturn redirect('redirect')->with('msg','redirect');//重定向到controllerreturn 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类,其中有三个属性:

  • $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类来访问

//使用HTTP request sessionecho '<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']);echo Session::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');

到此,关于“Laravel如何处理用户请求”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Laravel如何处理用户请求

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Laravel如何处理用户请求

这篇文章主要介绍“Laravel如何处理用户请求”,在日常操作中,相信很多人在Laravel如何处理用户请求问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Laravel如何处理用户请求”的疑惑有所帮助!接下来
2023-07-04

Ngnix如何处理http请求

这篇文章主要为大家展示了“Ngnix如何处理http请求”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ngnix如何处理http请求”这篇文章吧。nginx处理http的请求是nginx最重要的
2023-06-27

PHP开发中如何安全处理用户输入和请求

随着互联网的发展和普及,有越来越多的人参与到Web应用程序的开发中。而作为其中常用的一种开发语言,PHP的使用也越来越广泛。然而,由于用户输入的不可控性,Web应用程序往往面临着安全风险,如SQL注入、跨站脚本攻击等。因此,在进行PHP开发
2023-10-21

Tomcat9如何实现请求处理

这篇文章给大家分享的是有关Tomcat9如何实现请求处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。请求处理Tomcat对于HTTP请求,会由Connector监听的端口,通过线程池的处理进行多线程的处理。此线
2023-06-02

redis如何处理多个请求

Redis处理多个请求的方式主要有两种:顺序处理:Redis是单线程的,它会按照请求的顺序依次处理每个请求。当有多个请求同时到达时,Redis会依次处理这些请求,不会同时处理多个请求。并发处理:虽然Redis是单线程的,但它可以通过多路复用
redis如何处理多个请求
2024-04-03

PHP中如何处理HTTP请求错误?

在Web开发中,HTTP请求错误是时常会碰到的问题。可能是接口请求超时、参数传递错误、网络连接不正常等等。在PHP中,我们可以通过各种方法处理这些HTTP请求错误。下面就来具体探讨一下。一、使用try…catch语句使用try…catch语
PHP中如何处理HTTP请求错误?
2023-12-09

laravel怎么使用中间件记录用户请求日志

这篇文章主要讲解了“laravel怎么使用中间件记录用户请求日志”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“laravel怎么使用中间件记录用户请求日志”吧!一、创建中间件可以使用命令创建
2023-06-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录