2015-09-05 4 views
-2

Я проверяю все поля $_POST динамически. Проблема в том, что посетители могут изменить атрибут имени на что-либо еще с помощью элемента Inspect Element и отправить форму, и проверка не произойдет. Например, если клиент изменяет атрибут имени с email на случайное слово, для этого поля проверки не произойдет. Как я могу предотвратить это. Я должен получить все все почтовые поля динамически, хотя

<input type = "text" name = "email[0]"> 
<input type = "text" name = "aphabets[1]"> 
<input type = "text" name = "numbers[1]"> 

foreach ($_POST as $key => $value) { 
foreach($value as $k => $v){ 
if ($key[$i] === "email"){ 
email($v); 
} 
if ($key[$i] === "numbers"){ 
required($v); 
} 
} 
} 
function email($v){ 
//validate email 
} 
function required($v){ 
//validate email 
} 
+2

Почему бы просто не отклонить его, если он пуст? – chris85

ответ

1

Вы не можете доверять клиенту, чтобы сказать вам, что правила валидации. Сюда входят данные, которые вы отправляете клиенту и хотите вернуться без изменений.

Это говорит ...

посетители могут изменить имя атрибута к чему-либо другому, используя Осмотреть элемент и отправить форму и проверка не будет

Если изменить имя на что-то, что вам не ожидают обработки, тогда нет смысла обрабатывать его.

должны получить все все почтовые поля динамически, хотя

Почему вы должны получить все поля?

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

Это не поле, в котором вы писали форму. Зачем вам это вообще принимать?

Это недопустимый ввод в вашу систему. Игнорируйте его или отправьте ошибку обратно в браузер.

+0

но это возможно? – Manu

+0

Нет. Чтобы это было возможно, вам нужно будет доверять данным, поступающим от клиента, и вы этого не сделаете. – Quentin

-2

Использование можно использовать JQuery, Jquery проверки плагин и многое другое ..

+0

Это сделало бы его более восприимчивым к помехам пользователей, не менее. – Quentin