大家好,如果名称midname姓氏电子邮件电话必填字段和验证,这个if else语句的正确编码是什么。
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
die("First Name Should be letters and white space only!");
}
if (!preg_match("/^[a-zA-Z ]*$/",$miname))
{
die("Please Enter Your Middle Name!");
}
if (!preg_match("/^[a-zA-Z ]*$/",$lastname))
{
die("Please Enter Your Last Name!");
}
if (!preg_match("/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z] {2,3})$/i",$email))
{
die("E-mail address not valid");
}
else if (!preg_match("/^([1]-)?[0-9]{3}-[0-9]{3}-[0-9]{4}$/i",$phone))
{
die("Phone should only contain 11 digits and start with (09)!");
}
if($_POST["inputName"] &&$_POST["inputmiName"]&&$_POST["inputlName"] && $_POST["inputEmail"]&& $_POST["inputPhone"]&& $_POST["inputEvent"]&& $_POST["date"]){ $name= $_POST["inputName"]; $miname= $_POST["inputmiName"]; $lastname= $_POST["inputlName"]; $email= $_POST["inputEmail"]; $phone= $_POST["inputPhone"]; $date= $_POST["date"];}
else{ exit("Please Complete The Form!");}
$sql = "INSERT INTO `catering` (`name`, `miname`,`lastname`,`email`, `phone`, `event`, `food`, `foodA`, `foodB`, `foodC`, `foodD`, `foodE`, `foodF`, `foodG`, `foodH`, `foodI`, `foodJ`, `pack1`,`total`,`date`, `date_join`) VALUES ( ' ". $name ." ' ,' ". $miname ." ' ,' ". $lastname ." ' ,' ". $email ." ' ,' ". $phone ." ' ,' ". $event ." ' ,' ". $foodvariable ." ' , ' ". $foodvariableA ." ', ' ". $foodvariableB ." ' , ' ". $foodvariableC ." ' , ' ". $foodvariableD ." ' , ' ". $foodvariableE ." ' , ' ". $foodvariableF ." ' , ' ". $foodvariableG ." ' , ' ". $foodvariableH ." ' , ' ". $foodvariableI ." ' , ' ". $foodvariableJ ." ' ,' ". $pack1 ." ' ,' ". $total ." ', ' ". $date_new ." ' ,NOW());";
if( mysqli_query($conn, $sql )) echo "Food Reservation SENT![Your Reservation Is only Valid for 3 days. after 3days we will call you to confirm if you will continue your reservation Thank You!";
?>
答案 0 :(得分:1)
我没有检查你的正则表达式,但不是,它不是。
这种验证之王并不适合您的应用程序。通常,每个if语句都应该有一个else和你想要的else-if-s。这不是强制性的,但是一种很好的做法。
第二个想法我想告诉你的是你应该使用一个负责验证的课程。例如:
static Class MyValidator {
public static function AlphaString($str){
return preg_match("/^[a-zA-Z ]*$/", $str)
}
}
这是进行验证的好方法。如果您需要更改,可以在应用程序中的一个位置执行更改。
我想说的第三件事是在WebApps中使用第三方开源软件是件好事。在这种情况下,您可以使用jQuery Validation
插件。当然,您仍需要在服务器上测试代码,但在此部分,使用框架可能会为您节省大量时间。任何PHP框架都有验证器。
答案 1 :(得分:0)
对于中间名和姓,您不需要使用preg_match()
,您只需检查它是否为空
所以代替:
else if (!preg_match("/^[a-zA-Z ]*$/",$miname))
您可以使用:
else if (strlen($miname) === 0)
您也不需要使用elseif
语句。简单的if
语句可以。
此外,电话号码上的preg_match
可以删除,并替换为strlen()
以检查长度,并substr()
检查前2位数字。
所以代替:
else if (!preg_match("/^([1]-)?[0-9]{3}-[0-9]{3}-[0-9]{4}$/i",$phone))
您可以使用:
else if (substr($phone, 0, 2) !== '09' || strlen($phone) !== 11)
Preg match是一项非常密集的功能,只能谨慎使用。