Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: и опять проверка :-)
 
 автор: NovikovMA   (24.07.2007 в 19:12)   письмо автору
 
 

Вот попробовал сделать универсальную проверку вводимых данных...
В принципе все заключается в том, что необходимо создать массив, где были бы все рег.выражения для всех переменных... Мне кажется, что это не сильно затрудняет процесс написания работы, ибо больше 30-40 переменных пользователем не вводится обычно...

Ну и конечно стандартная mysql_escape_string...

Если по каким-то причинам не надо проверять данные, то можно сделать $c['имя']=''; и тогда не будет проверяться...


$c['surname']='/^[а-яА-Яa-zA-Z0-9]+$/';
$c['tel']='/^[0-9\s()-]+$/';
$c['icq']='/^[0-9]+$/';
$c['id']='/^[0-9]+$/';
$c['email']='/[-0-9a-z_]+@[-0-9a-z_^\.]+\.[a-z]{2,3}/i';
foreach($_GET as $g=>$v){
    if((isset($c[strtolower($g)]))){
        if((trim($v)!='')and($c[strtolower($g)]!='')){
            if(!preg_match($c[strtolower($g)],$v)){
                die('Ошибка ввода данных '.$g);
            }else{
                $data[strtolower($g)]=mysql_escape_string($v);
            };
        }else{
            if((trim($v)!='')){
            $data[strtolower($g)]=mysql_escape_string($v);
           };
        };
    }else{
        die('Ошибка ввода данных '.$g);
    };
};

Правда дальше надо будет вместо $_GET[] использовать $data[], но можно сделать, чтобы создавались прямые переменные...
Правда писал "на коленке", так что может есть проблемы, но в общем подход пойдет?

   
 
 автор: Trianon   (24.07.2007 в 19:31)   письмо автору
 
   для: NovikovMA   (24.07.2007 в 19:12)
 

Попробуйте решить 21-ю задачу из раздела "Задачи"
http://www.softtime.ru/info/task.php?id_article=110

   
 
 автор: NovikovMA   (24.07.2007 в 19:44)   письмо автору
 
   для: Trianon   (24.07.2007 в 19:31)
 

Имеется ввиду "Тебе чего, нечем заняться? Лучше сделай задачку :-)" (шучу)

С радостью сделаю, только не сейчас, ибо времени особо нету...

   
 
 автор: Trianon   (24.07.2007 в 19:48)   письмо автору
 
   для: NovikovMA   (24.07.2007 в 19:44)
 

Имется в виду - в реальной задаче Ваша идея чего-то проверять заранее, почти наверняка рассосется сама собой. Так что не стоит тратить время на ее реализацию. Тем более - если нету лишнего.

   
 
 автор: NovikovMA   (24.07.2007 в 19:53)   письмо автору
 
   для: Trianon   (24.07.2007 в 19:48)
 

Да, согласен, что при вводе одной, двух переменных не надо накручивать такое...

Просто попросили "добавить защиту, а то про нее забыли", долго думая, как так можно про "нее забыть", решил сделать вот такой скрипт и инклудить его в самом начале...

Но что-то подсказывает мне, что там есть дыры. Помогите найти...

   
 
 автор: Trianon   (24.07.2007 в 19:56)   письмо автору
 
   для: NovikovMA   (24.07.2007 в 19:53)
 

Пас.
Дыры в системе защиты отдельно от защищаемого кода искать - тратить время понапрасну.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования