错误时加载空白页而不管表单操作位置


loading blank page despite form action location upon error

我正在创建一个简单的表单,由用户提交并通过电子邮件发送。如果表单为空或不是有效的电子邮件,我试图造成错误,如果成功,则重新加载带有成功消息的页面。

当我提交空白时,它会重新加载页面而不会出错,如果我在(有效或无效的电子邮件)中输入了任何内容,它会将页面重新加载为白色,尽管表单操作是正确的。我陷入了困境,需要帮助。谢谢

 <?php
    require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/system/init.php');
    if(isset($_POST['submit'])) {
        $email = $_POST['email'];
        if(empty($_POST['email']) || !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
            $error = "Please enter a valid email";
        }else{
            $success = true;    
            mysql_query("INSERT INTO survey 
                (email) VALUES('".$_POST['email']."' ) ") 
                or die(mysql_error());  
        }
    }

    ?>
<div class="email-survey">
            <?php if(isset($success)) { ?>
            <div class="success">Thank You!</div>
            <?php } ?>
            <?php if(isset($error)) { ?>
            <div class="error">
                <?php echo $error; ?>
            </div>
            <?php } ?>
             <form name="settings" action="/survey-confirm.php" method="post">
                <input type="text" name="email" /> <br />
                <input type="submit" name="submit" value="submit" />
             </form>
        </div>
<?php
function control($type, $text)
{
echo '<div class="'.$type.'">'.$text.'</div>';
}
require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/system/init.php');
    if(isset($_POST['submit'])) {
        $email = $_POST['email'];
        if(empty($_POST['email']) || !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
            control('error', 'Type valid mail!');
        }else{
            control('success', 'All done!');   
            mysql_query("INSERT INTO survey 
                (email) VALUES('".$_POST['email']."' ) ") 
                or die(mysql_error());  
        }
    }
else
{echo 'echo '<form name="settings" action="/survey-confirm.php" method="post">
<input type="text" name="email" /> <br />
<input type="submit" name="submit" value="submit" />
</form>
</div>';}
?>

这是一个名为control的小函数,您可以调用它,并将自定义的div名称和文本显示给用户。

控件("这是DIV名称"、"这是给用户的消息")