Example #1
0
File: Time.php Project: kevinwan/xf
 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;
 }
Example #2
0
 /**
  * 验证表单 分析规则 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;
     }
 }