内核更新
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
namespace think;
|
||||
|
||||
use think\Request;
|
||||
use think\Session;
|
||||
|
||||
class Validate
|
||||
{
|
||||
@@ -479,9 +480,10 @@ class Validate
|
||||
* @access protected
|
||||
* @param mixed $value 字段值
|
||||
* @param string $rule 验证规则
|
||||
* @param array $data 验证数据
|
||||
* @return bool
|
||||
*/
|
||||
protected function is($value, $rule)
|
||||
protected function is($value, $rule, $data = [])
|
||||
{
|
||||
switch ($rule) {
|
||||
case 'require':
|
||||
@@ -541,6 +543,8 @@ class Validate
|
||||
$result = $this->filter($value, FILTER_VALIDATE_FLOAT);
|
||||
break;
|
||||
case 'number':
|
||||
$result = is_numeric($value);
|
||||
break;
|
||||
case 'integer':
|
||||
// 是否为整形
|
||||
$result = $this->filter($value, FILTER_VALIDATE_INT);
|
||||
@@ -563,6 +567,9 @@ class Validate
|
||||
case 'image':
|
||||
$result = $value instanceof \think\File && in_array($this->getImageType($value->getRealPath()), [1, 2, 3, 6]);
|
||||
break;
|
||||
case 'token':
|
||||
$result = $this->token($value, '__token__', $data);
|
||||
break;
|
||||
default:
|
||||
if (isset(self::$type[$rule])) {
|
||||
// 注册的验证规则
|
||||
@@ -1083,6 +1090,33 @@ class Validate
|
||||
return 1 === preg_match($rule, (string) $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证表单令牌
|
||||
* @access protected
|
||||
* @param mixed $value 字段值
|
||||
* @param mixed $rule 验证规则
|
||||
* @param array $data 数据
|
||||
* @return bool
|
||||
*/
|
||||
protected function token($value, $rule, $data)
|
||||
{
|
||||
$rule = !empty($rule) ? $rule : '__token__';
|
||||
if (!isset($data[$rule]) || !Session::has($rule)) {
|
||||
// 令牌数据无效
|
||||
return false;
|
||||
}
|
||||
|
||||
// 令牌验证
|
||||
if (isset($data[$rule]) && Session::get($rule) === $data[$rule]) {
|
||||
// 防止重复提交
|
||||
Session::delete($rule); // 验证完成销毁session
|
||||
return true;
|
||||
}
|
||||
// 开启TOKEN重置
|
||||
Session::delete($rule);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 获取错误信息
|
||||
public function getError()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user