Вопрос проверки формы PHP? - PullRequest
0 голосов
/ 25 марта 2010

Нужно ли подтверждать название или почтовый адрес? когда у меня это закодировано в следующем формате. И если да, то почему?

$address = mysqli_real_escape_string($mysqli, htmlentities($_POST['address']));
$name = mysqli_real_escape_string($mysqli, htmlentities($_POST['name']));

Ответы [ 3 ]

1 голос
/ 25 марта 2010

Сколько имен или адресов вы знаете, которые содержат «$» или «%»? Есть простые проверки, которые вы можете выполнить для проверки на глупость пользователей. Обычно имя будет содержать только слова (а иногда с запятой и точкой, если они являются Jr, Sr и т. Д.), А адрес будет содержать только буквенно-цифровые символы (если они не сокращаются, в этом случае точка может быть включена). В этом нет необходимости, но лично я бы поставил чеки, чтобы вы не заканчивали тем, что пользователи просто вводят случайные BS, просто чтобы быть смешными (это одна из моих любимых мозолей, извините).

1 голос
/ 25 марта 2010
  1. Не храните значения, отфильтрованные по htmlspecialchars / htmlentities / etc, в вашей базе данных - делайте это непосредственно перед отображением в документах HTML / XML / etc.
  2. Если вы в порядке с именами вроде blah blah <>DAS#^^2@@vm/.,czc, то этот код выглядит хорошо.
0 голосов
/ 25 марта 2010

Вы, кажется, немного запутались, потому что у вас есть 2 способа экранирования данных и ни одного из фильтров, когда используется правило FIEO Filter Input Escape Output

Фильтрация:

если ВЫ ПОСТАНОВИЛИ, что «имя» может состоять только из прописных и строчных букв, длиной от 2 до 50 символов и может содержать тире и одинарные кавычки ('), тогда вам следует либо:

удалите все, что не соответствует вашему собственному примеру определения выше (возможно, с использованием регулярных выражений) ИЛИ ЖЕ отменить операцию

В зависимости от того, насколько добрым вы хотите быть для вашего пользователя / потенциального взломщика

filter_var () также очень полезен в этом сценарии.

Экранирование

Вы избегаете данных в готовности к следующей среде, к которой стремятся данные;

Если его зайти в базу данных, вы бы использовали mysqli_real_escape_string (), если вы переходите на экран в html, тогда используете htmlentities () и т. Д.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...