public static function validate($var) { if (XF_Functions::isEmpty($var)) { return FALSE; } if (!is_scalar($var)) { return FALSE; } $tmp = explode(' ', $var); if (count($tmp) != 2) { return false; } if (XF_String_Validate_Date::validate($tmp[0]) == false) { return false; } $tmp = explode(':', $tmp[1]); if (count($tmp) != 3) { return false; } if ($tmp[0] > 23 || $tmp[0] < 0 || $tmp[1] > 59 || $tmp[1] < 0 || $tmp[2] > 59 || $tmp[2] < 0) { return false; } return TRUE; }
/** * 验证表单 分析规则 Validate * @access private * @param array $data 将要验证的数组资料 * @param string $key 当前需要验证的字段[key] * @param string $rules_name 规则名称 * @param mixed $rules_value 规则值 * @param array $message 自定义错误信息 * @param XF_Db_Table_Abstract $db_table 主要支持unique的验证,默认为null * @param bool $is_insert 是否为添加数据操作?如果不是,则不强制执行required * @return bool */ private function _switchValidateFormData($data, $key, $rules_name, $rules_value, $message, XF_Db_Table_Abstract $db_table = NULL, $is_insert = TRUE) { $this->_validate_count++; //判断规则,分析结果 $validateOk = true; switch ($rules_name) { //验证 必填 case 'required': if ($rules_value == 'true') { if (isset($data[$key])) { if (XF_Functions::isEmpty($data[$key])) { $validateOk = false; } } elseif ($is_insert == true) { $validateOk = false; } } break; //验证 数字 //验证 数字 case 'number': if (isset($data[$key])) { if ($rules_value == 'true') { if (!is_numeric($data[$key])) { $validateOk = false; } } } break; //数字小于 //数字小于 case 'lt': if (isset($data[$key])) { if (!is_numeric($data[$key]) || !is_numeric($rules_value)) { $validateOk = false; } elseif ($data[$key] >= $rules_value) { $validateOk = false; } } break; //数字大于 //数字大于 case 'gt': if (isset($data[$key])) { if (!is_numeric($data[$key]) || !is_numeric($rules_value)) { $validateOk = false; } elseif ($data[$key] <= $rules_value) { $validateOk = false; } } break; //等于 //等于 case 'equal': if (isset($data[$key])) { if ($data[$key] !== $rules_value) { $validateOk = false; } } break; //不等于 //不等于 case 'unequal': if (isset($data[$key])) { if ($data[$key] === $rules_value) { $validateOk = false; } } break; //验证 是否为正确的email //验证 是否为正确的email case 'email': if (!empty($data[$key]) && $rules_value == 'true') { $validateOk = XF_String_Validate_Email::validate($data[$key]); } break; //验证 是否为正确的电话号码 //验证 是否为正确的电话号码 case 'tel': if (!empty($data[$key]) && $rules_value == 'true') { $validateOk = XF_String_Validate_Phone::validate($data[$key]); } break; //验证 是否为正确的手机号码 //验证 是否为正确的手机号码 case 'mobile': if (!empty($data[$key]) && $rules_value == 'true') { $validateOk = XF_String_Validate_Mobile::validate($data[$key]); } break; //验证 是否为正确的身份证号码 //验证 是否为正确的身份证号码 case 'card': if (!empty($data[$key]) && $rules_value == 'true') { $validateOk = XF_String_Validate_Card::validate($data[$key]); } break; //验证 是否为正确邮政编码 //验证 是否为正确邮政编码 case 'zip': if (!empty($data[$key]) && $rules_value == 'true') { $validateOk = XF_String_Validate_ZipCode::validate($data[$key]); } break; //验证 最小长度 //验证 最小长度 case 'minlen': if (!empty($data[$key])) { if (mb_strlen($data[$key], 'utf8') < $rules_value) { $validateOk = false; } } break; //验证 最大长度 //验证 最大长度 case 'maxlen': if (!empty($data[$key])) { if (mb_strlen($data[$key], 'utf8') > $rules_value) { $validateOk = false; } } break; //验证 ip地址 //验证 ip地址 case 'ip': if (!empty($data[$key]) && $rules_value == 'true') { $validateOk = XF_String_Validate_Ip::validate($data[$key]); } break; /** * 验证 取值范围在列表中 * 例如:in:2|23|9|0 * */ /** * 验证 取值范围在列表中 * 例如:in:2|23|9|0 * */ case 'in': if (XF_Functions::isEmpty($data[$key]) == FALSE) { if (!in_array($data[$key], explode('|', $rules_value))) { $validateOk = false; } } break; /** * 验证 取值范围必需不在列表中 * 例如:not_in:2|23|9|0 * */ /** * 验证 取值范围必需不在列表中 * 例如:not_in:2|23|9|0 * */ case 'not_in': if (XF_Functions::isEmpty($data[$key]) == FALSE) { if (!in_array($data[$key], explode('|', $rules_value))) { $validateOk = false; } } break; //验证与指定的字段值是否相同 //验证与指定的字段值是否相同 case 'confirm': if (isset($data[$key])) { if ($data[$key] != $data[$rules_value]) { $validateOk = false; } } break; case 'date': if (isset($data[$key]) && $rules_value == 'true') { if (!XF_String_Validate_Date::validate($data[$key])) { $validateOk = false; } } break; case 'time': if (isset($data[$key]) && $rules_value == 'true') { if (!XF_String_Validate_Time::validate($data[$key])) { $validateOk = false; } } break; case 'unique': if (isset($data[$key]) && $rules_value == 'true') { if ($db_table == NULL) { $validateOk = false; } elseif (!XF_Db_Table_Validate_Unique::validate($data[$key], $key, $db_table, $is_insert)) { $validateOk = false; } } break; } //字段值为 '$NULL' 时直接通过验证 2014-09-3 if (isset($data[$key]) && $data[$key] == '$NULL') { $validateOk = true; } //没有错误 if ($validateOk) { $this->_validate_success_count++; return true; } else { //记录错误 $errorMessage = $key . '=>' . $rules_name . ':' . $rules_value; if (isset($message[$key]) && is_array($message[$key]) && isset($message[$key][$rules_name])) { $errorMessage = $message[$key][$rules_name]; } elseif (isset($message[$key])) { $errorMessage = (string) $message[$key]; } XF_DataPool::getInstance()->replace('TableFieldDataValidateError', $errorMessage); return false; } }