|
|
|
@ -35,9 +35,9 @@ trait form_validator { |
|
|
|
* |
|
|
|
* |
|
|
|
* @param array $data |
|
|
|
* @param array $data |
|
|
|
* @param string $field |
|
|
|
* @param string $field |
|
|
|
* @param mixed return: null avoids an error on no-entry; false gives errors on no-entry; default is the value |
|
|
|
* @param mixed return: null avoids an error on no-entry; false gives errors on no-entry; default is the value. DO NOT MESS with this... |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private static function check_if_empty(array $data, string $field) { |
|
|
|
private static function check_if_null_or_false(array $data, string $field) { |
|
|
|
$d = $data[$field] ?? null; |
|
|
|
$d = $data[$field] ?? null; |
|
|
|
return match($d) { |
|
|
|
return match($d) { |
|
|
|
null => true, // Pass validation as null or value unset |
|
|
|
null => true, // Pass validation as null or value unset |
|
|
|
@ -47,13 +47,13 @@ trait form_validator { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_positive(array $data, string $field): bool { |
|
|
|
private static function is_positive(array $data, string $field): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
return (intval($r) >= 0) ? true : false; |
|
|
|
return (intval($r) >= 0) ? true : false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_required(array $data, string $field): bool { |
|
|
|
private static function is_required(array $data, string $field): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
|
|
|
|
|
|
|
|
if (common::get_count($r)) { |
|
|
|
if (common::get_count($r)) { |
|
|
|
@ -68,51 +68,51 @@ trait form_validator { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_email(array $data, string $field): bool { |
|
|
|
private static function is_email(array $data, string $field): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
return (filter_var($r, FILTER_VALIDATE_EMAIL) === false) ? false : true; |
|
|
|
return (filter_var($r, FILTER_VALIDATE_EMAIL) === false) ? false : true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_min(array $data, string $field, string $min): bool { |
|
|
|
private static function is_min(array $data, string $field, string $min): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
return mb_strlen($r) >= intval($min); |
|
|
|
return mb_strlen($r) >= intval($min); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_max(array $data, string $field, string $max): bool { |
|
|
|
private static function is_max(array $data, string $field, string $max): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
return mb_strlen($r) <= intval($max); |
|
|
|
return mb_strlen($r) <= intval($max); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_greater_than(array $data, string $field, string $min): bool { |
|
|
|
private static function is_greater_than(array $data, string $field, string $min): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
return intval($r) > intval($min); |
|
|
|
return intval($r) > intval($min); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_less_than(array $data, string $field, string $max): bool { |
|
|
|
private static function is_less_than(array $data, string $field, string $max): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
return intval($r) < intval($max); |
|
|
|
return intval($r) < intval($max); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_number_range(array $data, string $field, string $min, string $max): bool { |
|
|
|
private static function is_number_range(array $data, string $field, string $min, string $max): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
$no = intval($r); |
|
|
|
$no = intval($r); |
|
|
|
return $no >= intval($min) && $no <= intval($max); |
|
|
|
return $no >= intval($min) && $no <= intval($max); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_between(array $data, string $field, string $min, string $max): bool { |
|
|
|
private static function is_between(array $data, string $field, string $min, string $max): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
$len = mb_strlen($r); |
|
|
|
$len = mb_strlen($r); |
|
|
|
return $len >= intval($min) && $len <= intval($max); |
|
|
|
return $len >= intval($min) && $len <= intval($max); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_same(array $data, string $field, string $other): bool { |
|
|
|
private static function is_same(array $data, string $field, string $other): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
|
|
|
|
|
|
|
|
if (isset($data[$other])) { |
|
|
|
if (isset($data[$other])) { |
|
|
|
@ -123,13 +123,13 @@ trait form_validator { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_alphanumeric(array $data, string $field): bool { |
|
|
|
private static function is_alphanumeric(array $data, string $field): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
return ctype_alnum($r); |
|
|
|
return ctype_alnum($r); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_secure(array $data, string $field): bool { |
|
|
|
private static function is_secure(array $data, string $field): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
// Is 8 to 64 CHRs |
|
|
|
// Is 8 to 64 CHRs |
|
|
|
$pattern = "#.*^(?=.{8,64})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$#"; |
|
|
|
$pattern = "#.*^(?=.{8,64})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$#"; |
|
|
|
@ -137,14 +137,14 @@ trait form_validator { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_valid_email_domain(array $data, string $field): bool { |
|
|
|
private static function is_valid_email_domain(array $data, string $field): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
$domain = ltrim(stristr($r, '@'), '@') . '.'; |
|
|
|
$domain = ltrim(stristr($r, '@'), '@') . '.'; |
|
|
|
return checkdnsrr($domain, 'MX'); |
|
|
|
return checkdnsrr($domain, 'MX'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static function is_valid_domain(array $data, string $field): bool { |
|
|
|
private static function is_valid_domain(array $data, string $field): bool { |
|
|
|
$r = self::check_if_empty($data, $field); |
|
|
|
$r = self::check_if_null_or_false($data, $field); |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
if (is_bool($r)) return $r; |
|
|
|
return checkdnsrr($r, 'A') |
|
|
|
return checkdnsrr($r, 'A') |
|
|
|
|| checkdnsrr($r, 'AAAA') |
|
|
|
|| checkdnsrr($r, 'AAAA') |
|
|
|
|