php正确编码验证字段

时间:2014-03-08 08:40:41

标签: php

大家好,如果名称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!";

  ?>

2 个答案:

答案 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是一项非常密集的功能,只能谨慎使用。