最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Laravel框架處理用戶的請求操作詳解

 更新時間:2019年12月20日 09:43:14   作者:theVicTory  
這篇文章主要介紹了Laravel框架處理用戶的請求操作,結(jié)合實例形式分析了laravel框架請求、響應以及中間件、路由等相關(guān)概念與操作技巧,需要的朋友可以參考下

本文實例講述了Laravel框架處理用戶的請求操作。分享給大家供大家參考,具體如下:

1、請求對象Request

Request中包含了用戶請求的一些信息,使用該對象首先需要use Illuminate\Http\Request類,之后在參數(shù)中傳入該對象,

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一個數(shù)組時,laravel會自動將其轉(zhuǎn)化為JSON格式,如果需要將某個數(shù)據(jù)轉(zhuǎn)化為JSON可以使用response()->json():

return response()->json($data);

response()方法支持自定義狀態(tài)碼與響應頭:

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()函數(shù)來實現(xiàn)頁面的重定向

//重定向到命名路由,帶參數(shù)
return redirect()->route('redirect',['name'=>'tory']);
//重定向到路由,帶一次性Session
return redirect('redirect')->with('msg','redirect');
//重定向到controller
return redirect()->action('Login@redirect');
//重定向到上一界面
return redirect()->back();

通過with可以將數(shù)據(jù)通過session傳給頁面,之后通過Session::get('msg')來獲取數(shù)據(jù),這也是兩個頁面之間跳轉(zhuǎn)時數(shù)據(jù)傳遞較為安全的方法。

4、中間件

Laravel提供了中間件機制用于對用戶的請求request進行過濾,并在返回response之前進行處理。這種機制在nodeJS的express框架中也有,被成為攔截器,對用戶的請求先進行過濾再轉(zhuǎn)發(fā)到應用Application。中間件文件存放在app/Http/Middleware目錄下,其中包括認證、CSRF保護中間價等。比如認證驗證中間件會驗證用戶是否經(jīng)過認證(如登錄),如果用戶沒有經(jīng)過認證,中間件會將用戶重定向到登錄頁面,而如果用戶已經(jīng)經(jīng)過認證,中間件就會允許請求繼續(xù)往前進入下一步操作。

4.1、定義中間件

在中間件的目錄下新建一個php類,用于對活動頁面的請求進行攔截,當日期沒有到達指定日期之前將對活動的請求重定向到noActivity路由:

namespace App\Http\Middleware;
use Closure;
class Activity
{
  public function handle($request,Closure $next){
    //如果時間小于指定時間則跳轉(zhuǎn)到noActivity路由
    if (time()<strtotime('2018-5-12')){
      return redirect('noActivity');
    }else {      //時間符合則執(zhí)行下一步并把請求request傳遞給下一步
      return $next($request);
    }
  }
}

后置中間件則是先執(zhí)行請求操作并返回給$response,在執(zhí)行完后置操作后再返回

public function handle($request, Closure $next)
{
    $response = $next($request);    //先執(zhí)行請求
    // 執(zhí)行后置中間件操作
    return $response;
}

注意不可以直接return內(nèi)容,而是需要通過response()函數(shù)返回你的內(nèi)容

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來在服務器端儲存用戶的登錄信息等數(shù)據(jù),Laravel中不使用PHP默認的session,而是自己實現(xiàn)了一套session機制。session默認使用文件來驅(qū)動的,可以在config/session.php中修改其驅(qū)動方式為redis或者數(shù)據(jù)庫。

可以通過以下三種方式訪問session

  • 通過request對象訪問session
  • 通過輔助函數(shù)session()訪問
  • 通過Session類來訪問
//使用HTTP request session
echo '<br/>';
$request->session()->put('key','value');
echo $request->session()->get('key');
//使用輔助函數(shù)session
echo "<br/>";
session(['key2'=>'value2']);
echo "session輔助函數(shù)".session('key2');
//Session類
Session::put(['key3'=>'val3']);
echo Session::get('key3')

獲取所有session數(shù)組:

$res=Session::all();

刪除session:

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

存入數(shù)組:

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

從session中拿出數(shù)據(jù)并刪除:

$res=Session::pull('arr');  //取出數(shù)據(jù)并刪除

存入一次性數(shù)據(jù),存入之后只允許取出一次后就刪除:

Session::flash('key5','val5');

更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。

相關(guān)文章

  • thinkPHP5使用laypage分頁插件實現(xiàn)列表分頁功能

    thinkPHP5使用laypage分頁插件實現(xiàn)列表分頁功能

    這篇文章主要為大家詳細介紹了thinkPHP5使用laypage分頁插件實現(xiàn)列表分頁功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Django 中 cookie的使用

    Django 中 cookie的使用

    Cookie是瀏覽器在客戶端留下的一段記錄,這段記錄可以保留在內(nèi)存或者硬盤上。Django里面,對cookie的讀取和設置很簡單。接下來通過本文給大家分享Django 中 cookie的使用,感興趣的朋友一起看看吧
    2017-08-08
  • Yii2.0預定義的別名功能小結(jié)

    Yii2.0預定義的別名功能小結(jié)

    這篇文章主要介紹了Yii2.0預定義的別名功能,總結(jié)分析了Yii2.0常見的12個預定義別名的具體表示方法與對應功能,需要的朋友可以參考下
    2016-07-07
  • php遍歷數(shù)組的4種方法總結(jié)

    php遍歷數(shù)組的4種方法總結(jié)

    這篇文章主要介紹了php遍歷數(shù)組的4種方法總結(jié),它分分別是foreach循環(huán)、each函數(shù)、list函數(shù)、for循環(huán),需要的朋友可以參考下
    2014-07-07
  • 利用PHP和AJAX創(chuàng)建RSS聚合器的代碼

    利用PHP和AJAX創(chuàng)建RSS聚合器的代碼

    利用PHP和AJAX創(chuàng)建RSS聚合器的代碼...
    2007-03-03
  • PHP生成指定長度隨機數(shù)最簡潔的方法

    PHP生成指定長度隨機數(shù)最簡潔的方法

    這篇文章主要介紹了PHP生成指定長度隨機數(shù)最簡潔的方法,一行代碼搞定隨機數(shù)生成,是不是最簡潔、最優(yōu)雅的方法,需要的朋友可以參考下
    2014-07-07
  • Yii2結(jié)合Workerman的websocket示例詳解

    Yii2結(jié)合Workerman的websocket示例詳解

    這篇文章主要給大家介紹了關(guān)于Yii2結(jié)合Workerman的websocket的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2018-09-09
  • PHP實現(xiàn)文件上傳后臺處理腳本

    PHP實現(xiàn)文件上傳后臺處理腳本

    這篇文章主要為大家詳細介紹了PHP實現(xiàn)文件上傳后臺處理腳本,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Laravel框架運行出錯提示RuntimeException No application encryption key has been specified.解決方法

    Laravel框架運行出錯提示RuntimeException No application encryption ke

    這篇文章主要介紹了Laravel框架運行出錯提示RuntimeException No application encryption key has been specified.解決方法,涉及Laravel框架相關(guān)配置、設置與運行操作技巧,需要的朋友可以參考下
    2019-04-04
  • laravel 多圖上傳及圖片的存儲例子

    laravel 多圖上傳及圖片的存儲例子

    今天小編就為大家分享一篇laravel 多圖上傳及圖片的存儲例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10

最新評論

鹤庆县| 贡觉县| 大同市| 雷波县| 广宗县| 定州市| 涿州市| 广西| 永康市| 将乐县| 南安市| 永新县| 滨海县| 隆回县| 广水市| 望谟县| 肥城市| 阳朔县| 黔江区| 长垣县| 长海县| 甘肃省| 措美县| 确山县| 明溪县| 玛曲县| 咸宁市| 阳信县| 大兴区| 泸溪县| 左权县| 苍梧县| 安平县| 宜州市| 铁岭市| 江川县| 建宁县| 东乡族自治县| 宣化县| 苍溪县| 崇礼县|