• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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']);
    //重定向到路由,带一次性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');
    
    

    更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • Laravel 5.5中为响应请求提供的可响应接口详解
    • 让Laravel API永远返回JSON格式响应的方法示例
    • Laravel+Dingo/Api 自定义响应的实现
    • laravel http 自定义公共验证和响应的方法
    • Laravel5.1 框架Request请求操作常见用法实例分析
    • 跟我学Laravel之请求与输入
    • 跟我学Laravel之请求(Request)的生命周期
    • 解决laravel 出现ajax请求419(unknown status)的问题
    • Laravel获取当前请求的控制器和方法以及中间件的例子
    • laravel请求参数校验方法
    • Laravel5.1 框架响应基本用法实例分析
    上一篇:PHP上传图片到数据库并显示的实例代码
    下一篇:PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Laravel框架处理用户的请求操作详解 Laravel,框架,处理,用户,的,