【问题标题】:PHP Form Validation and structurePHP 表单验证和结构
【发布时间】:2012-03-30 10:53:32
【问题描述】:

如果提交不成功,我正在寻找一些帮助来构建 Web 表单以包含 PHP 验证和错误消息,这些消息会放置在表单的正确位置。在将我需要的实际表单信息和验证输入结构之前,我只是将一个简单的表单与一些随机验证规则放在一起,以进行概念验证。

这是我的代码:-

<?php
if($_POST['name'] && $_POST['email'])   {

    $errors = array();
    $name = $_POST['name'];
    $email = $_POST['email'];

    if (strlen($name) > 10) {
        $errors['name'] = 'Name is too long';
    }

    if(empty($name) || empty($email))   {
        $errors['required'] = 'All fields required';
    }
}

if(empty($errors) && $_POST)    {
    echo 'Your form has been submitted';            

}   elseif ($errors || !$_POST) {
?>  
        <form name="form" action="index.php" method="post">
        <?PHP if (isset($errors['required']))   { echo $errors['required'];} ?>
            Name:<br>
            <input type="text" name="name" value="<?php echo $name ?>"><?PHP if (isset($errors['name'])){ echo $errors['name']; } ?><br>
            Email<br>
            <input type="text" name="email"><br>
            <input type="submit" name="submit" value="submit">
        </form>
<?PHP   }
?>

结果是我的表单显示并提交,但验证被忽略了。如果任何验证导致错误,而不是表单上显示的错误,则页面仅返回空白,没有错误消息或表单。谁能告诉我哪里出错了?

任何帮助将不胜感激!

谢谢,Ben(如果您没有猜到我是 PHP 和 HTML 新手!)

【问题讨论】:

  • 问题到底是什么?
  • 抱歉,我想我已经弄清楚了这个帖子的目的了。

标签: php forms validation


【解决方案1】:

if($_POST['name'] &amp;&amp; $_POST['email']) { 将在其中一个或两个字段为空时返回 false,因此永远不会运行验证(发生在条件内部)。

如果提供了电子邮件地址并且名称超过 10 个字符,则表单会显示相关错误(“名称太长”)

【讨论】:

  • 很好看,我也没有意识到这一点!
  • 我将开头的if($_POST['name'] &amp;&amp; $_POST['email']) { 更改为if ($_POST),这解决了问题。非常感谢您的帮助。
【解决方案2】:

我认为你的问题可能在这一行

}   elseif ($errors || !$_POST) {

尝试使用

}   elseif (!empty($errors) || !$_POST) {

【讨论】:

  • 实际查看代码 - 您可能可以删除整个 elseif 语句,然后将其替换为 } else {
【解决方案3】:

我的建议是在开发模式下工作,并设置错误报告以显示通知和警告。此外,任何变量初始化都会很好。

我在下面稍微修改了您的代码,以便为您提供变量检查和初始化的要点:)

<?php
$errors = array();
$name='';
$email='';
if(isset($_POST['name']) && isset($_POST['email']))   {


    $name = $_POST['name'];
    $email = $_POST['email'];

    if (strlen($name) > 10) {
        $errors['name'] = 'Name is too long';
    }

    if(empty($name) || empty($email))   {
        $errors['required'] = 'All fields required';
    }
}

if(empty($errors) && $_POST)    {
    echo 'Your form has been submitted';            

}   elseif ($errors || !$_POST) {
?>  
        <form name="form" action="9941580.php" method="post">
        <?PHP if (isset($errors['required']))   { echo $errors['required'];} ?>
            Name:<br>
            <input type="text" name="name" value="<?php echo $name ?>"><?PHP if (isset($errors['name'])){ echo $errors['name']; } ?><br>
            Email<br>
            <input type="text" name="email"><br>
            <input type="submit" name="submit" value="submit">
        </form>
<?php   }
?>

【讨论】:

    【解决方案4】:

    看看我下面的建议

    <?php 
    if(isset($_POST['submit']))   { 
    
    $errors = array(); 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    
    if (strlen($name) > 10) { 
        $errors['name'] = 'Name is too long'; 
    } 
    
    if(empty($name) || empty($email))   { 
        $errors['required'] = 'All fields required'; 
    } 
    
    if(empty($errors) && $_POST)    { 
    echo 'Your form has been submitted';             
    
    }   elseif ($errors || !$_POST) { 
    ?>   
        <form name="form" action="" method="post"> 
        <?PHP if (isset($errors['required']))   { echo $errors['required'];} ?> 
            Name:<br> 
            <input type="text" name="name" value="<?php echo $name ?>"><?PHP if (isset($errors    ['name'])){ echo $errors['name']; } ?><br> 
            Email<br> 
            <input type="text" name="email"><br> 
            <input type="submit" name="submit" value="submit"> 
        </form> 
    <?PHP   } 
    
    
    
    }else{
    ?>
     <form name="form" action="" method="post"> 
    
            Name:<br> 
            <input type="text" name="name" value=""><br> 
            Email<br> 
            <input type="text" name="email"><br> 
            <input type="submit" name="submit" value="submit"> 
        </form> 
    <?php
    }
    ?> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多