停止PHP执行但显示HTML
在用户的配置文件页面中,我想在提交后用PHP验证他的输入,并在数据库更新之前在同一页面上显示错误 为此,我做了如下工作:停止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
<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>