停止PHP执行但显示HTML

停止PHP执行但显示HTML,php,html,Php,Html,在用户的配置文件页面中,我想在提交后用PHP验证他的输入,并在数据库更新之前在同一页面上显示错误 为此,我做了如下工作: <div> <?php if (isset($_POST["submitted"])) { if (!isValidEmail($_POST["email"])) { echo "<p>Please enter a valid email address.</p>"; return; // or

在用户的配置文件页面中,我想在提交后用PHP验证他的输入,并在数据库更新之前在同一页面上显示错误

为此,我做了如下工作:

<div>
<?php
if (isset($_POST["submitted"])) {
    if (!isValidEmail($_POST["email"])) {
        echo "<p>Please enter a valid email address.</p>";
        return; // or exit;
    }
    if (!isValidPhoneNumber($_POST["phoneNumber"])) {
        echo "<p>Please enter a valid phone number.</p>";
        return; // or exit;
    }
    ...
    if (updateUser($id, $email, $phoneNumber, $name)) {
        echo("<meta http-equiv='refresh' content='0'>");
    } else {
        echo "<p>An error occurred! Could not update your profile information!</p>";
    }
}
?>
</div>
<my-footer></my-footer>


很多时候,您会看到PHP框架可以为您处理这个问题。 以下是一个比较好的网站:

但您可以做的是将页脚(和/或代码的其余部分)放入一个函数中,该函数为您保存代码的其余部分,您可以稍后或在需要时调用它,这样您仍然可以优雅地结束代码执行

<div>
<?php
function footer() {
    $string = "</div>";
    $string .= "<my-footer></my-footer>";
    return $string;
}
if (isset($_POST["submitted"])) {
    if (!isValidEmail($_POST["email"])) {
        echo "<p>Please enter a valid email address.</p>";
        die(footer()); // Displays footer
    }
    if (!isValidPhoneNumber($_POST["phoneNumber"])) {
        echo "<p>Please enter a valid phone number.</p>";
        die(footer()); // Displays footer
    }
    ...
    if (updateUser($id, $email, $phoneNumber, $name)) {
        echo("<meta http-equiv='refresh' content='0'>");
    } else {
        die("<p>An error occurred! Could not update your profile information!</p>" . footer()); // kills the page execution, but still returns the foot of the page.
    }
}

echo footer();

?>


把你的流量调高一点

if (isset($_POST["submitted"])) {
    $has_errors = FALSE;
    $err_msg = '';

    if (!isValidEmail($_POST["email"])) {
        $err_msg .= "<p>Please enter a valid email address.</p>";
        $has_errors = TRUE;
    }
    if (!isValidPhoneNumber($_POST["phoneNumber"])) {
        $err_msg .= "<p>Please enter a valid phone number.</p>";
        $has_errors = TRUE;
    }

    if ( $has_errors ) {
        echo "<p>Please Correct the following and resubmit...</p>" . $err_msg;
    } else {
        if (updateUser($id, $email, $phoneNumber, $name)) {
            echo("<meta http-equiv='refresh' content='0'>");
        } else {
            echo "<p>An error occurred! Could not update your profile information!</p>";
        }
    }
}
if(isset($\u POST[“已提交”])){
$has_errors=FALSE;
$err_msg='';
如果(!isValidEmail($_POST[“email”])){
$err_msg.=“请输入有效的电子邮件地址。

”; $has_errors=TRUE; } 如果(!isValidPhoneNumber($_POST[“phoneNumber”])){ $err_msg.=“请输入有效的电话号码。

”; $has_errors=TRUE; } 如果($has_errors){ echo“请更正以下内容并重新提交…

”$err\u msg; }否则{ if(updateUser($id、$email、$phoneNumber、$name)){ 回声(“”); }否则{ echo“发生错误!无法更新您的配置文件信息!

”; } } }
您可以将验证逻辑放在页面顶部的函数中,并将所有
echo
更改为
return

function validate() {

    if (isset($_POST["submitted"])) {
        if (!isValidEmail($_POST["email"])) {
            return "<p>Please enter a valid email address.</p>";
        }
        if (!isValidPhoneNumber($_POST["phoneNumber"])) {
            return "<p>Please enter a valid phone number.</p>";
        }

        //...

        if (updateUser($id, $email, $phoneNumber, $name)) {
            return "<meta http-equiv='refresh' content='0'>";
        } else {
            return "<p>An error occurred! Could not update your profile information!</p>";
        }
    }

}

请注意,上面的操作将起作用,因为
$\u POST
是一个。但是,您可以考虑更改您的函数以通过<代码>电子邮件<代码> > <代码>电话号码> />代码> <代码>名称>代码>和<代码> ID >代码>作为参数。取而代之的是回归@不,它给出了相同的结果。嗯,我考虑过它,或者考虑使用
if
else if
else
块。。但我只是想知道PHP中是否有跳过脚本的方法。无论如何,谢谢!这是可行的,但我认为@BA_Webimax的解决方案更好,因为除了
元素之外,还有更多的信息要显示。不过还是谢谢你。哦,谢谢,这可能是最整洁的解决方案,我没想到。
<div>
    <?php echo validate(); ?>
</div>
<my-footer></my-footer>