中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Laravel如何處理用戶請求

發布時間:2022-12-08 09:30:20 來源:億速云 閱讀:112 作者:iii 欄目:開發技術

這篇文章主要介紹“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']);
//重定向到路由,帶一次性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類,其中有三個屬性:

  • $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 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如何處理用戶請求”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广平县| 梓潼县| 越西县| 颍上县| 咸阳市| 浪卡子县| 浑源县| 克什克腾旗| 芜湖市| 黄平县| 尚义县| 张家口市| 赞皇县| 青浦区| 且末县| 和静县| 巴林左旗| 鹰潭市| 文登市| 昌吉市| 华阴市| 同心县| 呼和浩特市| 康定县| 西藏| 柯坪县| 宣化县| 河西区| 淮阳县| 武宣县| 永丰县| 枣庄市| 辽中县| 镇巴县| 胶南市| 凌源市| 鲁甸县| 卢湾区| 射洪县| 新河县| 福州市|