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

时间:2013-11-01 06:58:15

标签: 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">                                
</form>

以下是我的processlogin.php文件中的代码段

if(!$_POST["username"] || !$_POST["password"])
{
    $msg = "You left one or more of the required fields.";
    echo $msg;
    //header("Location:http://localhost/login.php");
}

此代码检查是否填写了所有必填字段。如果没有,则显示错误消息。

直到现在一切都很好。

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

8 个答案:

答案 0 :(得分:9)

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

将错误信息放入会话中,如下所示:

$_SESSION['Error'] = "You left one or more of the required fields.";

比简单显示它是这样的:

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

        unset($_SESSION['Error']);

}

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

答案 1 :(得分:3)

header("Location:http://localhost/login.php?x=1")

在login.php中

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

答案 2 :(得分:1)

您可以在表格上方或表格上方显示消息。

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

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

答案 3 :(得分:1)

仅使用一个页面(您的login.php)显示表单,并在发送时验证其数据。因此,您不需要任何$ _SESSION变量,并且您拥有一个属于同一个文件的同一个文件。

<?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>

答案 4 :(得分:1)

试试这个:

HTML:

<form action="processlogin.php" method="post">            
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login"> 
<span>
 <?php if(isset($_GET['msg']))
  echo $_GET['msg'];
  ?>
</span>                               
</form>

的PHP:

if(!$_POST["username"] || !$_POST["password"])
{
$msg = "You left one or more of the required fields.";
header("Location:http://localhost/login.php?msg=$msg");
}

答案 5 :(得分:1)

希望它可以帮到你,

在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;
                }
            }

答案 6 :(得分:1)

<?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>

答案 7 :(得分:0)

使用这些功能:

<?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();

another.php

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