Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать Мой Netadmin.ws   
// Сегодня Вторник, 12 Декабря 2017 года. Текущее время: 15:14:50 Зарегистрироваться  
Главное меню
· Главная
· Web ClipArt
· Форум
· Поиск
· Публиковать
· Рекомендовать
· Статистика
· Топ 10

Темы
· Базы Данных
· Графика
· Все о VBulletin
· Веб сайт
· Веб Скрипты
· Безопасность
· Интернет
· Программирование
· Новости Сайта
· Операционные системы
· Multimedia online
· Сборник рецептов
· Серверы

Не пропустите
· Футбол


Текущие версии
Apache 1.3.34
tarball Win32 Binary

Apache 2.0.55
tarball Win32 Binary

MySQL 4.1.16
tarball zip

MySQL 5.0.17
tarball zip

PHP 4.4.1
tarball zip

PHP 5.1.1
tarball zip

Perl 5.8.7
tarball win

// 20-12-2005

Кто в онлайне
На данный момент, 3 гость (ей) и 0 пользователь (ей) находятся на сервере.

Вы анонимный пользователь. Для регистрации воспользуйтесь этой ссылкой


Анекдот
Встречаются два сослуживца после армии. Один говорит:
-Ты знаешь вчера был на Дне рождении, селетку под шубой ел.
На что другой ему отвечает:
-Да ты и в Армии хлеб под одеялом жрал.


PHP: Data Validator v1.0
Сборник рецептовПредставляю вашему вниманию универсальную функцию для проверки значений переменных, которая с успехом может использоваться для проверки переданных данных, например через $_POST, $_GET etc. Функция может проверять имеет ли переменная пустое значение, максимальную и минимальную длину строки, а также проверять строку по заданному регулярному выражению. На данный момент функция имеет встроенное регулярное выражение для проверки правильности формата адреса электронной почты. В дальнейшем планируется добавить возможность проверки гиперссылок. Для более детальной информации смотрите ниже предоставленный код.


PHP:

/**
/* PHP function Data Validator v1.0
/* author: polo
/* website: http://netadmin.ws
/* Функция для проверки ошибок в переменных.
/* Идеально подходит для проверки введенной пользователем информации.
/* В качестве первого аргумента получает проверяемый массив,
/* в нашем случае может быть $_POST, $_GET...
/* В качестве второго аргумента должна получить массив с параметрами для каждого поля
/* ключи массива должны совпадать с ключами проверяемого массива.
/* Пример массива параметров:
/* array(
/*   'field_name' => array(
/*                     'req' => boolean, // может ли поле иметь пустое значение
/*                     'regexp' => string, // валидное регулярное выражение PCRE для проверки значения поля или 'email' для проверки email адреса
/*                     'min' => int, // минимальное значение поля
/*                     'max' => int, // максимальное значение поля
/*                     'unset' => boolean // удалить переменную в случае ошибки
/*                   )
/* )
*/
function validate_data(&$arry$params)
{
    
// массив ошибочны переменных
    
$error = array();
    
// сообщения которые будут выдаваться как ошибки
    
$phrase = array(
                
'req' => 'Поле обязательно',
                
'bad' => 'Неверный формат',
                
'short' => 'Слишком короткое. Должно содержать не менее %s символов.',
                
'long' => 'Слишком длинное. Должно содержать не более %s символов.'
              
);
    
    
// проходимся по массиву параметров и проверяем на валидность
    
foreach ($params AS $f_name => $f_info)
    {
        if (
$f_info['req'] AND strlen($arry[$f_name]) == 0// обязательно ли поле, пустое?
        
{
            
$error[$f_name] = $phrase['req']; // устанавливаем ошибку для данного поля
            
if ($f_info['unset']) // удаляем переменную если требуется
            
{
                unset(
$arry[$f_name]);
            }
        }
        elseif((
$f_info['min'] AND $f_info['min'] > 0) AND (($len strlen($arry[$f_name])) > AND $len $f_info['min'])) // миниму символов
        
{
            
$error[$f_name] = sprintf($phrase['short'], $f_info['min']);
            if (
$f_info['unset'])
            {
                unset(
$arry[$f_name]);
            }
        }
        elseif((
$f_info['max'] AND $f_info['max'] > 0) AND strlen($arry[$f_name]) > $f_info['max']) // максимум символов
        
{
            
$error[$f_name] = sprintf($phrase['long'], $f_info['max']);
            if (
$f_info['unset'])
            {
                unset(
$arry[$f_name]);
            }
        }
        elseif ((
$f_info['regexp'] AND !empty($f_info['regexp'])) AND !empty($arry[$f_name])) // проверяем по регулярному выражению
        
{
            switch (
$f_info['regexp'])
            {
                case 
'email':
                    
// обратный слеш между & и '
                    
$regexp '#^[a-z0-9.!#$%&'*+-/=?^_`{|}~]+@([0-9.]+|([^s]+.+[a-z]{2,4}))$#si';
                    break;
                //case 'url': TODO
                default:
                    
$regexp = $f_info['regexp'];
            }
            if (!preg_match(
$regexp$arry[$f_name]))
            {
                
$error[$f_name] = $phrase['bad'];
                if (
$f_info['unset'])
                {
                    unset(
$arry[$f_name]);
                }
            }
        }    
    } // end foreach
    
    return 
$error;
}


Скрипт для проверки работы:

PHP:
<?php
// скрипт проверки Data validator
$show_form true;
$error null;
$fields_check = array(
                    
'name' => array(
                                
'req' => true,
                                
'regexp' => '',
                                
'min' => 6,
                                
'max' => 60,
                                
'unset' => false
                                
),
                    
'email' => array(
                                
'req' => true,
                                
'regexp' => 'email',
                                
'min' => 6,
                                
'max' => 60,
                                
'unset' => false
                                
),
                    
'phone' => array(
                                
'req' => false,
                                
'regexp' => '#+{0,1}[0-9 -]+#'// обратный слеш перед первым плюсом
                                
'min' => 7,
                                
'max' => 25,
                                
'unset' => true
                                
)
                );

if (
$_SERVER["REQUEST_METHOD"] == 'POST')
{
    
$show_form false;
    
$error validate_data($_POST$fields_check);
    if (empty(
$error))
    {
        echo 
'Все верно. Можно продолжать.';
    }
    else
    {
        
$show_form true;
    }
}


if (
$show_form)
{
?>
<form id="form" name="form" method="post" action="test.php">
  Полное имя*: 
  <input name="name" type="text" id="name" tabindex="1" value="<?php echo $_POST['name']; ?>" size="50" />
  <?php if($error['name']) echo '<font color="red" size="1">' $error['name'] . '</font>'?>
   <br />Email*: 
  <input name="email" type="text" id="email" tabindex="2" value="<?php echo $_POST['email']; ?>" size="50" />
  <?php if($error['email']) echo '<font color="red" size="1">' $error['email'] . '</font>'?>
   <br />Телефон : 
  <input name="phone" type="text" id="phone" tabindex="3" value="<?php echo $_POST['phone']; ?>" size="50" />
  <?php if($error['phone']) echo '<font color="red" size="1">' $error['phone'] . '</font>'?>
  
  <br /><br />

  <input type="submit" name="Submit" value="Отправить" />
</form>
<?php
}
?>



Посмотреть рабочую версию функции

Обсуждение статьи

Примечание: Данная статья является собственностью netadmin.ws, любое ее использования за пределами сайта netadmin.ws строго воспрещается.

Раздел: Сборник рецептов | Автор: polo | Опубликовал: polo 13.12.2005 20:17

 
Авторизация
Имя пользователя
Пароль
Хотите зарегистрироваться?

Смотрите также
· Больше о Сборник рецептов
· Новости от polo
· PHP HomePage


Самое читаемое в разделе "Сборник рецептов":
Data Validator v1.0


Версия для печати  Отправка статьи/новости другу

PHP: Data Validator v1.0 | Вход/Создание аккунта | всего комментариев: 0
Настройка
Комментарии принадлежат их авторам. Мы не несем ответственность за их содержание.
  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
 ©NetAdmin.ws 2001