Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么PHP脚本不在页面上显示元素就重新启动它的ELT?_Php - Fatal编程技术网

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

为什么PHP脚本不在页面上显示元素就重新启动它的ELT?,php,Php,我的问题是,如果使用以下代码,在使用表单后,这不会显示我想要的错误消息。我猜它只是重新启动.php脚本本身,覆盖我想要显示的消息 <?php echo '<!DOCTYPE HTML>'; echo '<html>'; echo '<head>'; echo '<link rel="stylesheet" href="mycss.css">'; echo '</head>'; echo '<body>'; func

我的问题是,如果使用以下代码,在使用表单后,这不会显示我想要的错误消息。我猜它只是重新启动.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\u 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
function webform\u show($erromessage)
^---
回显“

”.$errormessage.

”; ^---找出区别
您没有“重新启动”脚本。提交表单后,您只需调用两次
webform\u 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
function webform\u show($erromessage)
^---
回显“

”.$errormessage.

”; ^---找出区别
如果没有突出显示,很难阅读此内容。。为什么要在html几乎是一切的地方打开php标签呢
else
-发布['login']的分支尝试将else条件添加到您的2 if语句中,并在这些else中回显一些文本(这样您就知道是否满足了其中任何一个条件)。我可以想象两个POST用户名/密码为空时,实际上不是空的,而是等于“”(空字符串)。那里没有回声。编辑:为了清楚起见,有一个输入错误,
$errormessage
应该是
$errormessage
。注意
R
@Matthew,第一个是正确的,你的论点中有一个输入错误,如果没有突出显示,阅读起来很困难。。为什么要在html几乎是一切的地方打开php标签呢到
else
-发布['login']的分支尝试将else条件添加到您的2 if语句中,并在这些else中回显一些文本(这样您就知道是否满足了其中任何一个条件)。我可以想象两个POST用户名/密码为空时,实际上不是空的,而是等于“”(空字符串)。那里没有回声。编辑:为了清楚起见,有一个输入错误,
$errormessage
应该是
$errormessage
。注意
R
@Matthew,第一个是正确的,你的论点中有一个拼写错误。Marc B:谢谢你指出这个拼写错误。我找不到更简单的方法来显示错误消息,但要让webform保持活动状态。如何确保webform_show()(无参数)仅在第一次打开页面时调用?
$error='';如果(post){处理表单,必要时设置$error};显示Web表单($error)$error='';如果(post){处理表单,必要时设置$error};显示Web表单($error)基本上