PHP简单表单验证

PHP简单表单验证,php,validation,Php,Validation,好的,我想实现的是一个非常简单的表单验证,如下所示 名称:[必需,最小长度:2,最大长度:255] 电子邮件:[必填,最小长度:3,最大长度:255,有效电子邮件格式] 出生日期:[可选,格式:dd/mm/yyyy] 但是,一旦我单击submit(如果字段为空或已填充),我会在空白页面上显示所有回显错误 “名称必须至少为2个字符需要名称电子邮件必须至少为3个字符有效电子邮件不能为空” 到目前为止,我的代码是: index.php 姓名: 电邮: 出生日期: 及 confirm.php 非

好的,我想实现的是一个非常简单的表单验证,如下所示

  • 名称:[必需,最小长度:2,最大长度:255]
  • 电子邮件:[必填,最小长度:3,最大长度:255,有效电子邮件格式]
  • 出生日期:[可选,格式:dd/mm/yyyy]
  • 但是,一旦我单击submit(如果字段为空或已填充),我会在空白页面上显示所有回显错误

    “名称必须至少为2个字符需要名称电子邮件必须至少为3个字符有效电子邮件不能为空”

    到目前为止,我的代码是:

    index.php

    
    姓名:
    电邮:
    出生日期:
    

    confirm.php

    
    

    非常感谢您的帮助。

    在检查第一个和第二个错误后,您没有写任何东西使其停止

    另外,
    continue
    if
    语句中没有意义(请参阅)

    最后,页面是“空白”的,因为没有HTML输出,只有文本。您可能希望返回带有错误消息的表单页面

    $name = $_POST['$name'];
    $email = $_POST['$email'];
    $dob = $_POST['$dob'];
    
    那是错误的,你必须使用

    $name = $_POST['name'];
    $email = $_POST['email'];
    $dob = $_POST['dob'];
    
    另外,您可能需要更改线路

    $namelen = strlen($email);
    


    您的代码中包含以下内容:

    $name = $_POST['$name'];
    $email = $_POST['$email'];
    $dob = $_POST['$dob'];
    
    您基本上是在尝试访问未定义的索引。从密钥名称中删除额外的
    $

    $name = $_POST['name'];
    $email = $_POST['email'];
    $dob = $_POST['dob'];
    
    然后,在下面,您有一些类似的条件:

    if(condition == true) {
        continue;
    } else {
        // do something
    }
    
    实际上不需要,您可以将其更改为:

    if(!condition) {
        // do something
    }
    
    此外,最好将错误消息推送到一个数组(
    $errors
    )中,然后在其中循环并显示错误消息。这可能有助于更好地组织代码

    下面是修改后的代码的外观:

    if(!empty($_POST)) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        $dob = $_POST['dob'];
    
        $namelen = strlen($name);
        $emaillen = strlen($email);
        $max = 255;
        $minname = 2;
        $minemail = 3;
    
        if($namelen < $minname){
            $errors[] = "name must be at least 2 characters";
        } elseif($namelen > $max){
            $errors[] = "name must be less than 255 characters";
        }
    
        if($emaillen < $minemail){
            $errors[] = "email must be at least 3 characters";
        } elseif($emaillen > $max){
            $errors[] = "email must be less than 255 characters";
        }
    
        if(empty($name)){
            $errors[] = "name is required";
        }
    
        if(empty($email)){
            $errors[] = "email cannot be left empty";
        }
    
        if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
            $errors[] = "invalid email";
        }
    
        echo "<ul>";
        foreach ($errors as $error) {
            echo "<li>$error</li>";
        }
        echo "</ul>";
    
    }
    
    if(!empty($\u POST)){
    $name=$_POST['name'];
    $email=$_POST['email'];
    $dob=$_POST['dob'];
    $namelen=strlen($name);
    $emaillen=strlen($email);
    $max=255;
    $minname=2;
    $minemail=3;
    如果($namelen<$minname){
    $errors[]=“名称必须至少包含2个字符”;
    }elseif($namelen>$max){
    $errors[]=“名称必须少于255个字符”;
    }
    如果($emaillen<$minemail){
    $errors[]=“电子邮件必须至少包含3个字符”;
    }elseif($emaillen>最大值$max){
    $errors[]=“电子邮件必须少于255个字符”;
    }
    if(空($name)){
    $errors[]=“名称是必需的”;
    }
    如果(空($email)){
    $errors[]=“电子邮件不能为空”;
    }
    如果(!filter_var($email,filter_VALIDATE_email)){
    $errors[]=“无效电子邮件”;
    }
    回声“
      ”; foreach($errors作为$error){ 回显“
    • $error
    • ”; } 回声“
    ”; }
    它仍然可以改进,但是,这应该让您开始

    检查是否(!empty($\u POST[fieldname]))
    然后重定向它,在javascript中显示一个警告,指出字段为空

    在检查第一个和第二个错误后,您没有编写任何东西使其停止。您试图用这些
    继续语句?重新提交问题。如果字段为空,则回显“某物”,否则继续。在检查第一个和第二个错误后,如何使其停止?非常感谢。你有鹰眼,我看了好几遍,没有发现$namelen
    
    if(condition == true) {
        continue;
    } else {
        // do something
    }
    
    if(!condition) {
        // do something
    }
    
    if(!empty($_POST)) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        $dob = $_POST['dob'];
    
        $namelen = strlen($name);
        $emaillen = strlen($email);
        $max = 255;
        $minname = 2;
        $minemail = 3;
    
        if($namelen < $minname){
            $errors[] = "name must be at least 2 characters";
        } elseif($namelen > $max){
            $errors[] = "name must be less than 255 characters";
        }
    
        if($emaillen < $minemail){
            $errors[] = "email must be at least 3 characters";
        } elseif($emaillen > $max){
            $errors[] = "email must be less than 255 characters";
        }
    
        if(empty($name)){
            $errors[] = "name is required";
        }
    
        if(empty($email)){
            $errors[] = "email cannot be left empty";
        }
    
        if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
            $errors[] = "invalid email";
        }
    
        echo "<ul>";
        foreach ($errors as $error) {
            echo "<li>$error</li>";
        }
        echo "</ul>";
    
    }