Проверьте, находится ли отправляющее значение в массиве?
Недавно я прочитал статью, в которой говорилось, что вы никогда не должны доверять пользователю в отправке данных.
Итак, предположим, что у меня есть следующие входные данные формы:
<label for="input1">Answer 1</label>
<input type="radio" name="question1" value="answer1" id="input1" />
<label for="input2">Answer 2</label>
<input type="radio" name="question1" value="answer2" id="input2" />
<label for="input3">Answer 3</label>
<input type="radio" name="question1" value="answer3" id="input3" />
Можно ли проверить, находится ли опубликованный ответ внутри aray с ответами:
$question1_answers = array("answer1", "answer2", "answer3");
$answer1 = $_POST['question1'];
if ( in_array($answer1, $question1_answers) ) {
echo "OK!";
} else {
echo "Please select proper answer!";
}
Или, может быть, приведенный выше код не нужен, и я должен просто прочитать $_POST['question1']
, и этого будет достаточно?
3 answers
Можно ли проверить, находится ли опубликованный ответ внутри aray с ответами:
Да! Это очень хорошая практика для проверки такого значения переключателя. Статья, которую вы прочитали, верна, вы не должны слепо доверять предоставленным пользователем данным.
Для вашей ситуации это безопасно и достаточно. Как я предполагаю, этот пост был о внедрении sql, межсайтовых сценариях или чем-то в этом роде. Вы можете прочитать о внедрении sql здесь:
Http://en.wikipedia.org/wiki/Sql_injection
И о межсайтовых сценариях здесь:
Оба способа верны. Но я рекомендую первый способ, который вы опубликовали.