Является ли проверка необходимым шагом перед проверкой? - PullRequest
0 голосов
/ 08 декабря 2011

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

// validation required?
if(!preg_match('/^[\d]{3,4}$/', $_POST['card_CVV']))
{
 unset($_POST['card_CVV']);
 $error++;

// verification
}
elseif($card_CVV != $_POST['card_CVV'])
{
 $error++;
}

// pass verification
else
{
 // process transaction
}

Следует ли проводить проверку без проверки?

Ответы [ 3 ]

2 голосов
/ 08 декабря 2011

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

Где было бы более разумно проверить формат насторона клиента в javascript перед отправкой формы, может быть, когда они набирают текст, если вы хотите получить больше фантазии, таким образом, пользователь получает немедленную обратную связь и знает, что это неправильно перед отправкой.

Также вы должны знать о внедренииВозможности, если содержимое $_POST['card_CVV'] когда-либо помещается в запрос SQL или отображается где-то в виде html.Вы говорите, что храните его не так, и из показанного кода он используется только для прямого сравнения строк, поэтому я подозреваю, что все должно быть в порядке, но помните об этом в остальной части кода.

1 голос
/ 08 декабря 2011

Realy зависит от контекста и / или сообщений об ошибках, которые необходимо отобразить пользователю.

Например, вам нужна вышеуказанная проверка на первом входе, и, если это не допустимый ввод, отобразите сообщение пользователю. Однако, если вы хотите проверить, правильно ли пользователь ввел правильную card_CVV, вам нужны оба, потому что сообщение об ошибке отличается: неверный cvv или cvv не совпадают.

0 голосов
/ 08 декабря 2011

Во всех случаях вам нужно убедиться, что ваш код обработки ведет себя правильно, что почти всегда означает, что вы должны прервать обработку, если у вас нет необходимых входных данных. На самом деле не имеет значения, где в вашем конвейере обработки вы проверяете что-то, но это хорошая практика - быстро «провалиться» и дать пользователям знать, что происходит.

В то же время вы не хотите повторять код (сохраняйте вещи СУХИМ), что означает, что вам не следует проверять одни и те же проблемы более одного раза.

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