验证是验证前的必要步骤吗?

时间:2011-12-08 13:45:50

标签: php e-commerce

我正在审核我的所有代码,并且在验证用户输入之前我已经考虑过验证用户输入的必要性。例如,验证信用卡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 个答案:

答案 0 :(得分:2)

在这种特殊情况下,它没有必要,事实上也没有做任何事情,因为如果它的格式错误,它将永远不会是正确的。

更有意义的是在提交表单之前在javascript中验证客户端的格式,如果你想要获得更多的花哨,可能会输入,这样用户就会得到即时反馈,并知道这是错误的在提交之前。

如果您将$_POST['card_CVV']的内容放入SQL查询或显示为html,您应该注意注入的可能性。你说你不存储它,并且从显示的代码中它只用于直接字符串比较,所以我怀疑它应该没问题,但请注意其余代码中的这一点。

答案 1 :(得分:1)

真的取决于您需要向用户显示的上下文和/或错误消息。

例如,您需要在第一个输入上进行上述验证,如果它不是有效输入,则向用户显示消息。但是,如果您想检查用户是否输入了正确的card_CVV,则需要两者,因为错误消息不同:不是有效的cvv或cvv不匹配。

答案 2 :(得分:0)

在所有情况下,您需要确保您的处理代码正常运行,这几乎总意味着如果您没有所需的输入,则必须使处理失败。在您的处理管道中检查事物的位置并不重要,但是“快速失败”并让用户知道发生了什么是一个好习惯。

与此同时,您不想重复代码(保持干净),这意味着您不应该多次检查相同的问题。