嗨我还在学习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;
}
?>
感谢。
答案 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;
}