我应该如何使用PHP验证表单输入数据?

时间:2011-12-26 19:44:01

标签: php validation

嗨我还在学习PHP,所以如果我的代码看起来很愚蠢,那就不要太苛刻了。无论如何,我正在尝试建立一个联系页面并为其添加验证。我正在使用if语句,但我不认为它是正确的,以下代码应该如何看待?

<?php
if($name_blank == false){
    echo"you left name blank";
}
else if($email_blank == false){
    echo"Email blank";
}
else if($email_fake == false){
    echo"Fake email";
}
else if($number_blank == false){
    echo"Number blank";
}
else if($number_low == false){
    echo"Number incorrect";
}
else if($number_fake == false){
    echo"Fake number";
}
else if($comment_blank == false){
    echo"Commant blank";    
}else{
    hasError = false;
}
?>

感谢。

5 个答案:

答案 0 :(得分:1)

有很多库/框架可以为您处理表单中的大部分工作(以及PHP中的其他恼人的部分)。我喜欢Symfony,但如果你想要的只是一个联系表格,你可能想要找到一些不太复杂的东西。

IF / ELSEIF / ELSE和SWITCH / CASE都不是很好的结构。在这两种情况下,代码将在第一个计算结果为true的条件下停止。如果某人在您的表单中有多个无效输入,您只会输出您找到的第一个问题的错误消息。

我会使用类似的东西:

$hasError = false;
if($name_blank == false){
    echo"you left name blank";
    $hasError = true;
}
if($email_blank == false){
    echo"Email blank";
    $hasError = true;
}
if($email_fake == false){
    echo"Fake email";
    $hasError = true;
}
if($number_blank == false){
    echo"Number blank";
    $hasError = true;
}
if($number_low == false){
    echo"Number incorrect";
    $hasError = true;
}
if($number_fake == false){
    echo"Fake number";
    $hasError = true;
}
if($comment_blank == false){
    echo"Commant blank";  
    $hasError = true;  
}

当然,要正确使用表单还有很多其他功能,但要获得所需的基本功能,这将有助于此。

答案 1 :(得分:0)

请查看以下功能:

empty() - 有助于检查用户是否将数据提交到字段

strip_tags() - 阻止XSS *

isset() - 检查变量是否设置

当你开始学习数据库时:

mysqli_real_escape_string() - 阻止SQL注入*

你做的不够,也不正确。

如果名称不是空白,那么你会跳过其他所有字段,因为其他字段是if,但那些跳过的字段也可能是空的!

所以我建议你首先理解执行流程,在这种情况下只有if s就可以了,加上我上面提到的函数!

*当然你可以做的更多,但现在已经足够了

答案 2 :(得分:0)

考虑使用else,如果它似乎没问题。

在PHP中,你可以写elseif或'else if'(两个单词),行为与'elseif'(单个单词)中的行为相同。句法意义略有不同,但底线是两者都会产生完全相同的行为。

答案 3 :(得分:0)

一些简短的东西:

  • 您可以随时撰写($a == false)
  • ,而不是撰写(!$a)
  • 如果name_blank表示该名称为空白,则会认为错误消息是正确的,如果它是真的,而不是假的,所以也许你的变量命名有点奇怪
  • 没有理由不给出所有错误,不仅仅是第一个(即只有if (){} if (){}等)你可能想要将它们添加到错误消息字符串中,这也可以让你找出是否hasError或不是

答案 4 :(得分:0)

在客户端进行所有用户友好的验证,并忽略服务器端带有无效表单数据的请求以确保安全性。

通过客户端验证的人无论如何都不值得用户友好。

就程序员时间而言,验证过于昂贵。不要花太多时间来验证输入。

在这种情况下,使用ifs而不是ifs,了解if和else是什么。 我个人的偏好是

switch(true){
case blabla>number: break;
case blabla=="": break;
case strlen(blabla)==5: break;
}