Laravel 默认没有对输入的变量进行一些过滤操作,仅有一些处理空值的操作。用过tp都知道过滤只需要在配置或对象中设置过滤方法即可,但是laravel并没有预留类似处理方法,需要自己动手添加。
Laravel框架默认有一个处理空值的中间件,打开该中间件代码。
class ConvertEmptyStringsToNull extends TransformsRequest
{
/**
* Transform the given value.
*
* @param string $key
* @param mixed $value
* @return mixed
*/
protected function transform($key, $value)
{
return is_string($value) && $value === '' ? null : $value;
}
}
可以看见它会把空值默认转变成null,这个我个人感觉没啥作用甚至有副作用。因此我在Kernel.php中把这个中间件注释掉了。
这里我们借助这个代码新增一个对输入变量过滤的中间件。在Http\Middleware中新建一个文件,名字随意,我这里命名为FormFilter,添加对变量的过滤代码,过滤方法自己随意设置,我这里设置htmlspecialchars方法用于过滤操作,代码如下。
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TransformsRequest;
class FormFilter extends TransformsRequest
{
protected function transform($key, $value)
{
return is_string($value) && $value !== '' ? htmlspecialchars($value) : $value;
}
}
然后在Kernel.php中的$middleware数组中新增该中间件即可
laravel 接口路由无效(查看配置文件API_DOMAIN参数是否与请求url一致)