为什么PHP脚本重新启动它而不在页面上显示元素


Why PHP script restart itselt without showing an element on a page?

我的问题是,如果使用以下代码,在对表单求和后,这不会显示我想要的错误消息。我想它只是重新启动.php脚本本身,覆盖我想要显示的消息。

<?php
echo '<!DOCTYPE HTML>';
echo '<html>';
echo '<head>';
echo '<link rel="stylesheet" href="mycss.css">';
echo '</head>';
echo '<body>';
function webform_show($erromessage)
{
echo '<div class="form1">';
echo '  <form action="'.htmlspecialchars($_SERVER["PHP_SELF"]).'" method="post" name="auth_form">';
echo '    <input type="text" name="username" placeholder="username">';
echo '    <input type="password" name="password" placeholder="password">';
echo '    <p id="error">'.$errormessage.'</p>';
echo '    <input type="submit" name="login" value="login">';
echo "  </form>";
echo '</div>';
}
webform_show("");
if (isset($_POST['login'])) {
    if (empty($_POST['username']) || empty($_POST['password'])) {
    webform_show("Empty username or password");
    }
}
echo "</body>";
echo "</html>";
?>
我想

显示错误消息,但我想保持网络表单处于活动状态,以便能够再次检查用户名和密码。

你能帮我什么问题吗?

你不是在"重新启动"你的脚本。您只需在提交表单后webform_show()调用两次即可。

你基本上有:

webform_show(); // executes EVERY time script is called
if (... post was performed ...) {
   webform_show(); // executes every time a POST was performed
}

所以......页面上的第一个点击是GET,你显示一次表单。然后通过 POST 提交表单,并显示两次表单。

请注意,您有拼写错误:

function webform_show($erromessage)
                           ^---
echo '    <p id="error">'.$errormessage.'</p>';
                               ^--- spot the difference