$value) { $val = $this->__get($key); if ($val !== false) $res[$key] = $val; } return $res; } public function as_code($value) { return preg_match("/^[0-9a-zA-Z_]+$/",$value)?$value:false; } public function as_date($value) { if (preg_match("/^(\d{2})\.(\d{2})\.(\d{4})$/",$value,$m)) return ( ($m[1]<1) || ($m[1]>31) || ($m[2]<1) || ($m[2]>12) || ($m[3]<1900) || ($m[3]>2100) ) ? false : mktime(0,0,0,$m[2],$m[1],$m[3]); else if (preg_match("/^(\d{4})-(\d{2})-(\d{2})$/",$value,$m)) return ( ($m[3]<1) || ($m[3]>31) || ($m[2]<1) || ($m[2]>12) || ($m[1]<1900) || ($m[1]>2100) ) ? false : mktime(0,0,0,$m[2],$m[3],$m[1]); else if (preg_match("/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/",$value,$m)) return ( ($m[1]>=1900) && ($m[1]<=2100) && ($m[2]>=1) && ($m[2]<=12) && ($m[3]>=1) && ($m[3]<=31) && ($m[4]>=0) && ($m[4]<=23) && ($m[5]>=0) && ($m[5]<=59) && ($m[6]>=0) && ($m[6]<=59) ) ? mktime($m[4],$m[5],$m[6],$m[2],$m[3],$m[1]) : false; else if (preg_match("/^(\d{2})\.(\d{2})\.(\d{4}) (\d{2}):(\d{2}):(\d{2})$/",$value,$m)) return ( ($m[3]>=1900) && ($m[3]<=2100) && ($m[2]>=1) && ($m[2]<=12) && ($m[1]>=1) && ($m[1]<=31) && ($m[4]>=0) && ($m[4]<=23) && ($m[5]>=0) && ($m[5]<=59) && ($m[6]>=0) && ($m[6]<=59) ) ? mktime($m[4],$m[5],$m[6],$m[2],$m[1],$m[3]) : false; else return false; } public function as_digit($value) { return preg_match("/^\d+$/",$value)?$value:false; } public function as_cost($value) { return preg_match("/^\d+\.\d\d$/",$value)?$value:false; } public function as_email($value) { return preg_match("/^[0-9a-zA-Z_\.\-]+@[0-9a-zA-Z_\.\-]+\.?[a-z]{2,4}$/",$value)?$value:false; } public function as_bool($value) { return isset($value)&&(($value>0)||($value=='on')||($value=='yes')||($value===true)||($value=='true')); } public function as_boolint($value) { return isset($value)&&(($value>0)||($value=='on')||($value=='yes')||($value===true))?1:0; } public function as_string($value) { return preg_match("/^[0-9a-zа-я \(\)\-_\.,:;'\"\[\]]*$/ui",$value)?$value:false; } public function as_memo($value) { return preg_match("/^[0-9a-zа-я \(\)+\-_\.,:;'\"\#\№\$&!@\$%^\*\[\]<>\?\/\\\|~`]*$/uim",$value)?$value:false; } public function as_username($value) { return preg_match("/^[0-9a-zA-Z]{4,31}$/",$value)?$value:false; } public function as_password($value) { return preg_match("/^.{4,}$/",$value)?$value:false; } public function as_action($value) { return in_array($value,array('add','modify','delete'))?$value:false; } public function decimal_as_36($value) { $_CODE36 = '0123456789abcdefghijklmnopqrstuvwxyz'; $res = ''; $i = $value; $len = strlen($_CODE36); do { $res = substr($_CODE36,($i % $len),1) . $res; $i = floor($i / $len); } while ($i >= $len); if ($i>0) $res = substr($_CODE36,($i % $len),1) . $res; return $res; } public function seconds_to_string($value) { $res = ''; $i1 = 60*60*24; $i2 = floor($value/$i1); if (($i2) > 0) // дни { $res=$i2.'д'; $value -= $i2*$i1; } $i1 = 60*60; $i2 = floor($value/$i1); if ($i2 > 0) // часы { $res = "$res $i2".'ч'; $value-=$i2*$i1; }; $i1 = 60; $i2 = floor($value/$i1); if ($i2 > 0) // минуты { $res = "$res $i2".'м'; $value -=$i2*$i1; }; $i1 = 1; $i2 = floor($value/$i1); if ($i2 > 0 ) // секунды { $res = "$res $i2".'с'; } return $res; } public function __get($name) { if (in_array($name,array('com','col_name','dir','target','recordtype','action'))) { // значение параметра - буквенно-цифровой код return isset($_REQUEST[$name])?$this->as_code($_REQUEST[$name]):false; } else if (in_array($name,array('ldate'))) { // значение параметра - дата return isset($_REQUEST[$name])?$this->as_date($_REQUEST[$name]):false; } else if (in_array($name,array('id','cid','tid','type'))) { // значение параметра - цифровой идентификатор return isset($_REQUEST[$name])?$this->as_digit($_REQUEST[$name]):false; } else if (in_array($name,array('string','title'))) { // значение параметра - строковое значение return isset($_REQUEST[$name])?$this->as_string($_REQUEST[$name]):false; } else if (in_array($name,array('email'))) { return isset($_REQUEST[$name])?$this->as_email($_REQUEST[$name]):false; } else if (in_array($name,array('filter','record','list'))) { return (isset($_REQUEST[$name])&&is_array($_REQUEST[$name]))?$_REQUEST[$name]:false; } else if (in_array($name,array('without_performer','blocked','refresh'))) { return isset($_REQUEST[$name])?$this->as_bool($_REQUEST[$name]):false; } else if ($name=='username') { return isset($_REQUEST[$name])?$this->as_username($_REQUEST[$name]):false; } else if ($name=='password') { return isset($_REQUEST[$name])?$this->as_password($_REQUEST[$name]):false; } else if ($name=='sort') { return (isset($_REQUEST[$name])&&preg_match("/^-?[0-9a-zA-Z_]+$/",$_REQUEST[$name]))?$_REQUEST[$name]:false; } else { // если проверка для параметра не задана, то выводим его как есть return (isset($_REQUEST[$name]))?$_REQUEST[$name]:false; } } } $params = new params(); ?>