- Автор темы
- #1
PHP:
<?php
class validator {
private $params = array();
private $errors = array();
function __construct() {
$this->params['max_len']['email'] = 50;
$this->params['min_len']['email'] = 10;
$this->params['max_len']['url'] = 14;
$this->params['min_len']['url'] = 5;
$this->params['max_len']['alphanum'] = 255;
$this->params['min_len']['alphanum'] = 1;
$this->params['max_len']['alpha'] = 255;
$this->params['min_len']['alpha'] = 1;
$this->params['max_len']['numeric'] = 30;
$this->params['min_len']['numeric'] = 1;
$this->params['max_len']['integer'] = 20;
$this->params['min_len']['integer'] = 1;
$this->params['max_len']['login'] = 4;
$this->params['min_len']['login'] = 15;
$this->errors['email'] = 'Email некоректный или неукладывается в отведенное на него кол-во символов';
$this->errors['url'] = 'URL некоректный или неукладывается в отведенное на него кол-во символов';
$this->errors['alphanum'] = 'Буквы и цифры не прошли проверки на свою цифробуквенность или неукладываются в отведенное на них кол-во символов';
$this->errors['alpha'] = 'Буквы не прошли проверки на свою буквенность или неукладываются в отведенное на них кол-во символов';
$this->errors['numeric'] = 'Число не прошло проверки на свою численность или неукладываются в отведенное на него кол-во символов';
$this->errors['integer'] = 'Цифра не прошла проверки на свою целочисленность или неукладываются в отведенное на неё кол-во символов';
$this->errors['equal_to'] = 'Не тоже самое';
}
public function provider($type = 'alphanum', $data, $len = NULL, $equal_len = NULL) {
if (method_exists($this, $type)) {
if ($type == 'equal_to') {
if ($this->$type($data, $len, $equal_len)) {
return true;
} else {
return false;
}
} else {
if (!empty($len) && is_array($len)) {
if ($this->$type($data, $len)) {
return true;
} else {
return false;
}
} else {
if ($this->$type($data)) {
return true;
} else {
return false;
}
}
}
}
}
public function login($login, $len = NULL) {
if (is_array($len)) {
$min = $len[0];
$max = $len[1];
} else {
$min = $this->params['min_len']['login'];
$max = $this->params['max_len']['login'];
}
if (preg_match('/^([a-zA-Z0-9\$\_\&\@\#\№]){0,}$/', $login) && $this->check_length($login, $min, $max)) {
return true;
} else {
return false;
}
}
public function email($email, $len = NULL) {
if (is_array($len)) {
$min = $len[0];
$max = $len[1];
} else {
$min = $this->params['min_len']['email'];
$max = $this->params['max_len']['email'];
}
if (isset($email) && preg_match("/^([a-zA-Z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,6}$/i",$email) && $this->check_length($email, $min, $max)) {
return true;
} else {
return false;
}
}
public function url($url, $len = NULL) {
if (is_array($len)) {
$min = $len[0];
$max = $len[1];
} else {
$min = $this->params['min_len']['url'];
$max = $this->params['max_len']['url'];
}
if (isset($url) && preg_match("/^((http|https|ftp):\/\/([a-zA-Z0-9-])+(\.([a-zA-Z0-9-])+)*(\.([a-zA-Z0-9~\/]){2,6}+)+)?$/",$url) && $this->check_length($url, $min, $max)) {
return true;
} else {
return false;
}
}
public function captcha($first_arg) {
if (md5(md5(strtoupper($first_arg))) == $_SESSION['captcha']) {
return true;
} else {
return false;
}
}
public function equal_to($first, $second, $len) {
$min = $len[0];
$max = $len[1];
$first_len = strlen($first);
$second_len = strlen($second);
if (!is_array($first) && !is_array($second)) {
if ($first === $second && $this->check_length($first,$min,$max)) {
return true;
} else {
return false;
}
} elseif ((is_array($first) OR !is_array($second)) || (!is_array($first) OR is_array($second)) || (count($first) != count($second))) {
return false;
} else {
$temp = array();
$temp = array_diff($first, $second);
if (empty($temp)) {
return true;
} else {
return false;
}
}
}
public function alphanum($alphanum, $len = NULL) {
if (is_array($len)) {
$min = $len[0];
$max = $len[1];
} else {
$min = $this->params['min_len']['alphanum'];
$max = $this->params['max_len']['alphanum'];
}
if (isset($alphanum) && preg_match('/^[[:alnum:]]+$/', $alphanum) && $this->check_length($alphanum, $min, $max)) {
return true;
} else {
return false;
}
}
public function alpha($alpha, $len = NULL) {
if (is_array($len)) {
$min = $len[0];
$max = $len[1];
} else {
$min = $this->params['min_len']['alpha'];
$max = $this->params['max_len']['alpha'];
}
if (isset($alpha) && preg_match('/^[[:alpha:]]+$/i', $alpha) && $this->check_length($alpha, $min, $max)) {
return true;
} else {
return false;
}
}
public function numeric($numeric, $len = NULL) {
if (is_array($len)) {
$min = $len[0];
$max = $len[1];
} else {
$min = $this->params['min_len']['numeric'];
$max = $this->params['max_len']['numeric'];
}
if (isset($numeric) && is_numeric($numeric) && $this->check_length($numeric, $min, $max)) {
return true;
} else {
return false;
}
}
public function integer($integer, $len = NULL) {
if (is_array($len)) {
$min = $len[0];
$max = $len[1];
} else {
$min = $this->params['min_len']['integer'];
$max = $this->params['max_len']['integer'];
}
if (isset($integer) && is_int($integer) && $this->check_length($integer, $min, $max)) {
return true;
} else {
return false;
}
}
public function phone($phone) {
if ( !preg_match('^\+([0-9]{1,2})\s\(([0-9]{2,4})\)\s([0-9]{6,9})^', $phone) &&
!preg_match('^\+([0-9]{1,2})\s\(([0-9]{2,4})\)\s([0-9]{3})\-([0-9]{2})\-[(0-9){2}]^', $phone) &&
!preg_match('^([0-9]{3})\-([0-9]{3})^', $phone) &&
!preg_match('^([0-9]{2})\-([0-9]{2})\-([0-9]{2})^', $phone) ){
return false;
} else {
return true;
}
}
public function check_length($var, $min, $max) {
$varlen = strlen($var);
if ($varlen >= $min && $varlen <= $max) {
return true;
} else {
return false;
}
}
}
?>
Examples:
PHP:
<?php
$validator = new validator();
?>
<h2>Validator test</h2>
<p>
<b>Email test</b><br />
Email: te@me, result: <?=$validator->provider('email', 'te@me')?><br />
Email: te@me.ru[9,20], result: <?=$validator->provider('email', 'te@me', array(9,20))?><br />
Email: te@me.ru[5,20], result: <?=$validator->provider('email', 'te@me.ru', array(5,20))?><br />
<hr>
<b>URL test</b><br />
Url: test1.ru, result: <?=$validator->provider('url', 'test1.ru')?><br />
Url: http://test1.ru/[17,20], result: <?=$validator->provider('url', 'http://test1.ru/', array(17,20))?><br />
Url: http://test1.ru/[5,30], result: <?=$validator->provider('url', 'http://test1.ru/', array(5,30))?><br />
Url: https://test1.ru/[5,30], result: <?=$validator->provider('url', 'https://test1.ru/', array(5,30))?><br />
Url: ftp://test1.ru/[5,30], result: <?=$validator->provider('url', 'ftp://test1.ru/', array(5,30))?><br />
<hr>
<b>EqualTo</b><br />
Equal_to: password:qwerty, result: <?=$validator->provider('equal_to', 'password', 'qwerty')?><br />
Equal_to: password:password, result: <?=$validator->provider('equal_to', 'password', 'password')?><br />
<hr>
<b>Alphanum</b><br />
Alpha-numeric: @qwerty123, result: <?=$validator->provider('alphanum', '@qwerty123')?><br />
Alpha-numeruc: qwerty123, result: <?=$validator->provider('alphanum', 'qwerty123')?><br />
<hr>
<b>Alpha</b><br />
Alpha: @qwerty123, result: <?=$validator->provider('alpha', '@qwerty123')?><br />
Alpha: qwerty, result: <?=$validator->provider('alpha', 'qwerty')?><br />
<hr>
<b>Numeric</b><br />
Alpha: qwerty-12.3, result: <?=$validator->provider('numeric', 'qwerty-12.3')?><br />
Alpha: -12.3, result: <?=$validator->provider('numeric', '-12.3')?><br />
<hr>
<b>Integer</b><br />
Alpha: -12.3, result: <?=$validator->provider('integer', -12.3)?><br />
Alpha: -123, result: <?=$validator->provider('integer', -123)?><br />
</p>