首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Laravel 請求與輸入處理完整指南

     編輯:PHP 綜合知識

基本輸入獲取

Laravel 統一介面獲取用戶提交資料,無論 GET、POST、JSON 均可用 Input::get():

$name = Input::get('name');           // 單一欄位
$name = Input::get('name', 'Sally');  // 預設值
$hasName = Input::has('name');        // 是否存在
$allInput = Input::all();             // 所有輸入
$only = Input::only('username', 'password');
$except = Input::except('credit_card');

陣列輸入存取

$name = Input::get('products.0.name'); // 點號訪問巢狀陣列
Backbone.js 等前端框架以 JSON 提交時,Input::get 使用方式無差別。

Cookie 處理

Laravel 自動加密並簽名 Cookie,客戶端竄改會導致失效:

$value = Cookie::get('name');

設定 Cookie

$response = Response::make('Hello');
$response->withCookie(Cookie::make('name', 'value', $minutes));

延遲加入 Cookie 隊列

Cookie::queue('name', 'value', $minutes); // 回應建立前即可呼叫

永久 Cookie

$cookie = Cookie::forever('name', 'value');

輸入資料持久化(舊輸入保留)

表單驗證失敗重導時保留用戶輸入:

Input::flash();                    // 全部存入 Session
Input::flashOnly('username', 'email');
Input::flashExcept('password');

結合重定向

return Redirect::to('form')->withInput();
return Redirect::to('form')->withInput(Input::except('password'));

讀取舊輸入

$username = Input::old('username');

檔案上傳

$file = Input::file('photo');
if (Input::hasFile('photo')) { ... }

file() 回傳 Symfony\Component\HttpFoundation\File\UploadedFile 實例(繼承 SplFileInfo):

Input::file('photo')->move($destinationPath, $fileName);
$path = Input::file('photo')->getRealPath();
$size = Input::file('photo')->getSize();
$mime = Input::file('photo')->getMimeType();

Request 物件:請求詳細資訊

$uri = Request::path();                    // 請求 URI
$url = Request::url();                     // 完整 URL
$segment = Request::segment(1);            // URI 片段
$contentType = Request::header('Content-Type');
$pathInfo = Request::server('PATH_INFO');
$isAjax = Request::ajax();
$isSecure = Request::secure();
$format = Request::format();               // 基於 Accept 標頭

實用模式:表單驗證失敗重導保留輸入

// Controller
public function store() {
    $validator = Validator::make(Input::all(), $rules);
    if ($validator->fails()) {
        return Redirect::back()->withInput()->withErrors($validator);
    }
    // ...
}

// Blade 視圖
<input name="email" value="{{ old('email') }}">
@if ($errors->has('email'))
    <span class="error">{{ $errors->first('email') }}</span>
@endif

總結

Laravel 的 Input/Request 抽象層統一了 HTTP 請求資料的存取方式,內建加密 Cookie、舊輸入保留、檔案上傳封裝等常用功能,搭配驗證器可快速構建安全的表單處理流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved