|
|
|
| Вот попробовал сделать универсальную проверку вводимых данных...
В принципе все заключается в том, что необходимо создать массив, где были бы все рег.выражения для всех переменных... Мне кажется, что это не сильно затрудняет процесс написания работы, ибо больше 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[], но можно сделать, чтобы создавались прямые переменные...
Правда писал "на коленке", так что может есть проблемы, но в общем подход пойдет? | |
|
|
|
|
|
|
|
для: NovikovMA
(24.07.2007 в 19:12)
| | Попробуйте решить 21-ю задачу из раздела "Задачи"
http://www.softtime.ru/info/task.php?id_article=110 | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2007 в 19:31)
| | Имеется ввиду "Тебе чего, нечем заняться? Лучше сделай задачку :-)" (шучу)
С радостью сделаю, только не сейчас, ибо времени особо нету... | |
|
|
|
|
|
|
|
для: NovikovMA
(24.07.2007 в 19:44)
| | Имется в виду - в реальной задаче Ваша идея чего-то проверять заранее, почти наверняка рассосется сама собой. Так что не стоит тратить время на ее реализацию. Тем более - если нету лишнего. | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2007 в 19:48)
| | Да, согласен, что при вводе одной, двух переменных не надо накручивать такое...
Просто попросили "добавить защиту, а то про нее забыли", долго думая, как так можно про "нее забыть", решил сделать вот такой скрипт и инклудить его в самом начале...
Но что-то подсказывает мне, что там есть дыры. Помогите найти... | |
|
|
|
|
|
|
|
для: NovikovMA
(24.07.2007 в 19:53)
| | Пас.
Дыры в системе защиты отдельно от защищаемого кода искать - тратить время понапрасну. | |
|
|
|