3

我最近读了一篇文章,说你永远不应该相信用户发送数据。

因此,假设我有以下表单输入:

<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" />

是否可以检查发布的答案是否在带有答案的数组中:

$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']它就足够了?

4

3 回答 3

4

是否可以检查发布的答案是否在带有答案的数组中:

是的!这是验证这样的单选按钮值的非常好的做法。您阅读的文章是正确的,您不应盲目相信用户提供的数据。

于 2012-10-10T07:24:01.800 回答
2

对于您的情况,它是安全且足够的。我怎么猜,那篇文章是关于 sql 注入、跨站点脚本或类似的东西。您可以在此处阅读有关 sql 注入的信息:

http://en.wikipedia.org/wiki/Sql_injection

以及这里的跨站点脚本:

http://en.wikipedia.org/wiki/Cross-site_scripting

于 2012-10-10T07:27:00.143 回答
1

两种方式都是正确的。但我推荐您发布的第一种方式。

于 2012-10-10T07:24:21.987 回答