如何在PHP的HTML页面中显示错误消息?

如何在PHP的HTML页面中显示错误消息?,php,html,Php,Html,我有下面的登录表单(login.php),其中我要求输入用户名和密码 <form action="processlogin.php" method="post"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" value="Login">

我有下面的登录表单(login.php),其中我要求输入用户名和密码

<form action="processlogin.php" method="post">            
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="Login">                                
</form>
此代码检查是否所有必填字段都已填充。如果不是,则显示错误消息

到现在为止一切都很好

我的问题是,错误消息显示在纯白色页面中。我想在login.php文件中的登录表单上方显示它。我应该如何更改代码以获得
我的功能。

您可以在表格或表单上方的span中显示消息

    <span>
    <?php if(isset($_REQUEST[$msg]))
    echo $msg;
    ?>
    </span>
    <form>
    </form>

也不要在表单的操作页面中回显$msg。

仅使用一个页面(您的
login.php
)来显示表单,并在发送时验证其数据。因此,您不需要任何$\u会话变量,而且所有变量都位于同一个文件中,属于同一个文件

<?php

$msg = null;

if(isset($_GET['send'])) {
    if(!$_POST["username"] || !$_POST["password"]){
        $msg = "You left one or more of the required fields.";

        //header("Location:http://localhost/login.php");
    }
}

?>

<?php echo ($msg !== null)?'<p>ERROR: ' . $msg . '</p>':null; ?>

<form action="?send" method="post">            
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="Login">                                
</form>

在login.php中

if(isset($_GET('x'))){
//your html for error message
}
试试这个:

html:

希望它能帮助你

在processlogin.php中

        if(!$_POST["username"] || !$_POST["password"])
            {
                $msg = "You left one or more of the required fields.";
                $msgEncoded = base64_encode($msg);
                header("location:login.php?msg=".$msgEncoded);
            }
在login.php文件中

          $msg = base64_decode($_GET['msg']);
            if(isset($_GET['msg'])){

                if($msg!=""){
                    echo $msg;
                }
            }

我更喜欢Jquery验证或基于Ajax的身份验证。但你仍然可以这样做:

在会话中按如下方式放置错误消息:

$_SESSION['Error'] = "You left one or more of the required fields.";
而不是像这样简单地展示:

if( isset($_SESSION['Error']) )
{
        echo $_SESSION['Error'];

        unset($_SESSION['Error']);

}
在这种情况下,您可以在不同的操作中分配多条消息。


<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(!$_POST["username"] || !$_POST["password"])
{
    $msg = "You left one or more of the required fields.";
    echo $msg;
    //header("Location:http://localhost/login.php");
}
}
?>
<form action="<?php echo $PHP_SELF;?>" method="post">            
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="Login">                                
</form>
使用以下功能:

<?php
session_start();
define(FLASH_PREFIX,'Flash_')

function set_flash($key,$val){
    $_SESSION[FLASH_PREFIX.$key]=$val;
}

function is_flash($key){
    return array_key_exits(FLASH_PREFIX.$key,$_SESSION);
}
function get_flash($key){
    return $_SESSION[FLASH_PREFIX.$key];
}
function pop_flash($key){
    $ret=$_SESSION[FLASH_PREFIX.$key];
    unset($_SESSION[FLASH_PREFIX.$key]);
    return $ret;
}
?>
另一个.php

<html>
.
.
.
<body>
<?php if(is_flash('err_msg')){?>
<span class="err_msg"><?php echo pop_flash('err_msg'); ?></span>
<?php } ?>
.
.
.
</body></html>

.
.
.
.
.
.

使用javascript或jquery,而不是使用php进行验证我同意使用类似jquery AJAX的东西,并获得可以传递错误消息的JSON返回。一开始需要一点时间来适应,但这可以帮你省去很多麻烦。如果不想使用javascript,另一个选项是在会话变量中传递错误消息并执行isset($\u session['my\u var'])$_会话['my_var']:“”;在这个问题上,您的答案是正确的,但使用get会使url变脏。您可以使用会话
$\u请检查我的答案。如果$\u GET['msg']包含任何特殊字符怎么办?请检查Chinnu R的答案。您的答案是正确的,但使用get会使url变脏。您可以使用$\u会话请检查我的答案。对不起,您是对的。(-:让我们删除注释。+1请检查我的答案。+1简单但聪明。请检查会话解决方案的我的答案。供将来参考:注意“$\u GET必须有括号而不是括号”;此编辑旨在针对文章的作者,作为编辑毫无意义。它应该作为评论或回答来编写。这很好,但您正在使其变得复杂。代码必须更简单且易于管理。感谢您的关注,但我认为随着规模的扩大,需要一些复杂的东西。(:我不明白表单字段的条件测试在代码中的什么位置?我不明白第二个代码段将放在哪里
if( isset($_SESSION['Error']) )
{
        echo $_SESSION['Error'];

        unset($_SESSION['Error']);

}
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(!$_POST["username"] || !$_POST["password"])
{
    $msg = "You left one or more of the required fields.";
    echo $msg;
    //header("Location:http://localhost/login.php");
}
}
?>
<form action="<?php echo $PHP_SELF;?>" method="post">            
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="Login">                                
</form>
<?php
session_start();
define(FLASH_PREFIX,'Flash_')

function set_flash($key,$val){
    $_SESSION[FLASH_PREFIX.$key]=$val;
}

function is_flash($key){
    return array_key_exits(FLASH_PREFIX.$key,$_SESSION);
}
function get_flash($key){
    return $_SESSION[FLASH_PREFIX.$key];
}
function pop_flash($key){
    $ret=$_SESSION[FLASH_PREFIX.$key];
    unset($_SESSION[FLASH_PREFIX.$key]);
    return $ret;
}
?>
set_flash('err_msg','one field is empty');
header('location: another.php');
exit();
<html>
.
.
.
<body>
<?php if(is_flash('err_msg')){?>
<span class="err_msg"><?php echo pop_flash('err_msg'); ?></span>
<?php } ?>
.
.
.
</body></html>