内核更新

This commit is contained in:
2016-08-16 16:14:36 +08:00
parent ebde0fc13e
commit 81a25be484
25 changed files with 340 additions and 129 deletions

View File

@@ -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()
{