检查提交值是否在数组中?

时间:2012-10-10 07:20:42

标签: php html-form

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

所以我要说我有以下表格输入:

<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 个答案:

答案 0 :(得分:4)

  

是否可以通过答案检查已发布的答案是否在aray中:

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

答案 1 :(得分:2)

为您的情况安全和足够。我怎么猜,那个帖子是关于sql注入,跨站点脚本或类似的东西。你可以在这里阅读有关sql injecition的信息:

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

关于跨网站脚本:

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

答案 2 :(得分:1)

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