代码拉取完成,页面将自动刷新
5
邮箱验证逻辑问题
开启的
存在冲突
php版本8.0/7.4测试得到结果:
在邮箱验证时报错 错误信息为filter_var(): Argument #3 ($options) must be of type array|int, null given
经查找为目录“vendor/topthink/framework/src/think/Validate.php”
的第 1178到1189行错误
原始代码为:
public function filter($value, $rule): bool
{
if (is_string($rule) && strpos($rule, ',')) {
[$rule, $param] = explode(',', $rule);
} elseif (is_array($rule)) {
$param = $rule[1] ?? null;
$rule = $rule[0];
} else {
$param = null;
}
return false !== filter_var($value, is_int($rule) ? $rule : filter_id($rule), $param);
}
修正代码为
public function filter($value, $rule): bool
{
if (is_string($rule) && strpos($rule, ',')) {
[$rule, $param] = explode(',', $rule);
} elseif (is_array($rule)) {
$param = $rule[1] ?? array();
$rule = $rule[0];
} else {
$param = array();
}
return false !== filter_var($value, is_int($rule) ? $rule : filter_id($rule), $param);
}
经查找filter_var() 手册https://www.php.net/manual/zh/function.filter-var.php
代码中$param 也就是filter_var的第三个值 应为:规定一个包含标志/选项的关联数组或者一个单一的标志/选项。检查每个过滤器可能的标志和选项。