<?php
namespace app\middleware;
use Webman\Http\Request;
use Webman\Http\Response;
use Webman\MiddlewareInterface;
class ParamFilterMiddleware implements MiddlewareInterface
{
public function process(Request $request, callable $handler): Response
{
// 獲取 POST 參數(shù)
$param = $request->post();
// 確保 $param 是數(shù)組
if (!is_array($param)) {
$param = [];
}
// 過濾參數(shù)
$param = array_map(function($value) {
// 去除空格
$value = trim($value);
// 去除 HTML 標(biāo)簽
$value = strip_tags($value);
// 進一步過濾 SQL 注入風(fēng)險
$value = preg_replace('/[\'\"\\\;]+/', '', $value); // 去除引號和分號等
// dump($value);
return $value;
}, $param);
dump('------------------',$param);
// 將過濾后的參數(shù)重新設(shè)置回請求
$request->post($param);
return $handler($request);
}
}
我寫了個過濾的中間件,并且注冊了中間件:
return [
// 全局中間件
'' => [
// 過濾請求參數(shù)的中間件
\app\middleware\ParamFilterMiddleware::class,
]
];
但是我在控制器里用 $param = $request->all(); 或者 $param = $request->post(); 接收不到,啥原因?