Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка числового ввода [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Описание: Для чего такая педантичность?
EuGen Администратор
Отправлено: 20 Марта, 2011 - 23:05:43
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




В общем, по валидации могу представить небольшую простецкую функцию, которая на основании валидатора проверяет корректность значения. Но не ранее, чем завтра.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 20 Марта, 2011 - 23:14:44
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Да, давайте
 
 Top
DlTA
Отправлено: 20 Марта, 2011 - 23:41:23
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Vasiliya почитайте о методах взлома баз данных, методах защиты и способах отслеживания попыток взлома.
 
 Top
vsll
Отправлено: 21 Марта, 2011 - 14:58:10
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




DlTA пишет:
Vasiliya почитайте о методах взлома баз данных, методах защиты и способах отслеживания попыток взлома.
Это к чему?
 
 Top
EuGen Администратор
Отправлено: 21 Марта, 2011 - 15:07:49
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Не знаю к чему. Вот обещанный валидатор:
PHP:
скопировать код в буфер обмена
  1.  
  2. /*
  3. //sample of array-validation rules:
  4. $rgKeysRequired = array(
  5.         'row_number'    =>array('type'=>'int','empty'=>false, 'maxlength'=>null, 'format'=>null),
  6.         //
  7.         'app_id_main'   =>array('type'=>'string','empty'=>false, 'maxlength'=>null, 'format'=>null),
  8.         'reg_id_main'   =>array('type'=>'string','empty'=>false, 'maxlength'=>null, 'format'=>null),
  9.         'tarrif_code'   =>array('type'=>'numeric','empty'=>false, 'maxlength'=>1, 'format'=>null),
  10.         'status'        =>array('type'=>'string','empty'=>false, 'maxlength'=>2, 'format'=>null),
  11.         'msisdn_main'   =>array('type'=>'numeric','empty'=>false, 'maxlength'=>11, 'format'=>'/^79\d{9,9}$/'),
  12.         'account'       =>array('type'=>'string','empty'=>false, 'maxlength'=>12, 'format'=>null),
  13.         'amount'        =>array('type'=>'float','empty'=>true, 'maxlength'=>null, 'format'=>null),
  14.         'app_count'     =>array('type'=>'int','empty'=>true, 'maxlength'=>8, 'format'=>null),
  15.         'tarrif_main'   =>array('type'=>'string','empty'=>false, 'maxlength'=>90, 'format'=>null)
  16.         );
  17. */
  18. class Data_Validator
  19. {
  20.     protected $rgFields;
  21.     protected $rgTypesRule=array(
  22.         'int'=>0,
  23.         'double'=>1,
  24.         'numeric'=>2,
  25.         'string'=>3
  26.     );
  27.  
  28.     function  __construct($rgFields)
  29.     {
  30.         $this->rgFields=$rgFields;
  31.     }
  32.  
  33.     protected function setCoverType($data)
  34.     {
  35.         $sData=(string)$data;
  36.         if((string)((int)$data)===$sData)
  37.         {
  38.             return (int)($sData);
  39.         }
  40.         if((string)((double)$data)===$sData)
  41.         {
  42.             return (double)($sData);
  43.         }
  44.         return $sData;
  45.     }
  46.    
  47.     protected function getCoverType($data)
  48.     {
  49.         $sData=(string)$data;
  50.         if((string)((int)$data)===$sData)
  51.         {
  52.             return 'int';
  53.         }
  54.         if((string)((double)$data)===$sData)
  55.         {
  56.             return 'double';
  57.         }
  58.         return 'string';
  59.     }
  60.  
  61.     protected function checkDataType($data, $type)
  62.     {
  63.         //int < double < numeric < string
  64.        
  65.         return $this->rgTypesRule[$this->getCoverType($data)]<=$this->rgTypesRule[$type];
  66.     }
  67.  
  68.     function validate($rgDataCheck)
  69.     {
  70.         //first, integrity validation:
  71.         foreach($this->rgFields as $field => $rgValidator)
  72.         {
  73.             //check data existing:
  74.             if(!$rgValidator['empty'] && (!array_key_exists($field, $rgDataCheck) || !isset($rgDataCheck[$field])))
  75.             {
  76.                 return array('valid'=>false, 'trace'=>'Validator of field ['.$field.'] returns failing on empty-checking');
  77.             }
  78.             //check data type:
  79.            
  80.             if(!$rgValidator['empty'] && !$this->checkDataType($rgDataCheck[$field], $rgValidator['type']))
  81.             {
  82.                 return array('valid'=>false, 'trace'=>'Validator of field ['.$field.'] returns failing on type checking: expecting '.$rgValidator['type']);
  83.             }
  84.             //check length if present:
  85.             if(!$rgValidator['empty'] && isset($rgValidator['maxlength']) && strlen((string)$rgDataCheck[$field])>$rgValidator['maxlength'])
  86.             {
  87.                 return array('valid'=>false, 'trace'=>'Validator of field ['.$field.'] returns failing on maxlength checking: longer than '.$rgValidator['maxlength']);
  88.             }
  89.             //check format. This could be slow - depending of pattern difficulty, so this check is last:
  90.             if(!$rgValidator['empty'] && isset($rgValidator['format']) && !preg_match($rgValidator['format'], $rgDataCheck[$field]))
  91.             {
  92.                 return array('valid'=>false, 'trace'=>'Validator of field ['.$field.'] returns failing on format checking: expecting format '.$rgValidator['format']);
  93.             }
  94.         }
  95.         return array('valid'=>true, 'trace'=>null);
  96.     }
  97. }
  98.  


Гм... разьезжается из-за слишком узкого поля для кода php.
Не знаю как сделать лучше, опробовал вроде все.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 21 Марта, 2011 - 15:19:31
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Профессионально, сами писали?
Это из ядра этого сайта? Подмигивание
 
 Top
EuGen Администратор
Отправлено: 21 Марта, 2011 - 15:22:01
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Это мой простой валидатор. Естественно, код мой - так как движок и фреймворк я использую собственный.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 21 Марта, 2011 - 15:25:22
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Что-то у меня "скопировать код в буфер обмена" ни в одном браузере не работает, может я не так делаю, как бы скопировать чтобы без номеров строк, а то код большой, замучаешься потом править
(Добавление)
Всё, скопировла, а если будут вопросы, то здесь можно будет спросить?
 
 Top
EuGen Администратор
Отправлено: 21 Марта, 2011 - 15:37:17
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Разумеется, для того я и размещаю здесь код.
Думаю, на место в "пользовательских функциях" он не тянет - простой слишком.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 21 Марта, 2011 - 15:42:34
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Радость Всё гениальное - просто
Мне тут на месяц рогом рыть....
 
 Top
EuGen Администратор
Отправлено: 21 Марта, 2011 - 15:58:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Не стоит себя недооценивать, здесь нет ничего сложного (наоборот, есть некоторые недочеты), уверен, Вы разберетесь быстро.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Champion Супермодератор
Отправлено: 21 Марта, 2011 - 18:59:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Vasiliya пишет:
это интимные места моего сайта,
Мм, интимные места) Уже убрали, а мне не показали.
EuGen пишет:
Гм... разьезжается из-за слишком узкого поля для кода php.
Не знаю как сделать лучше, опробовал вроде все.
Можно в файрбаге поменять стиль у diva с кодом - пошире сделать).
Vasiliya пишет:
DlTA пишет:
Vasiliya почитайте о методах взлома баз данных, методах защиты и способах отслеживания попыток взлома.
Это к чему?
К тому, для чего данные фильтровать. И не только к БД это относится.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB