6

我有以下登录表单(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 文件的登录表单上方显示它。我应该如何更改我的代码以获得我的功能。

4

8 回答 8

10

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

将您的错误消息放入会话中,如下所示:

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

比简单的显示它像这样:

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

        unset($_SESSION['Error']);

}

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

于 2013-11-01T07:07:35.073 回答
3
header("Location:http://localhost/login.php?x=1")

在 login.php

if(isset($_GET('x'))){
//your html for error message
}
于 2013-11-01T07:03:26.040 回答
2

希望对你有帮助

在 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;
                }
            }
于 2013-11-01T07:05:17.027 回答
1

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

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

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

于 2013-11-01T07:01:19.443 回答
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>
于 2013-11-01T07:01:46.213 回答
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");
}
于 2013-11-01T07:03:36.097 回答
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>
于 2013-11-01T07:09:24.990 回答
1

使用这些功能:

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

另一个.php

<html>
.
.
.
<body>
<?php if(is_flash('err_msg')){?>
<span class="err_msg"><?php echo pop_flash('err_msg'); ?></span>
<?php } ?>
.
.
.
</body></html>
于 2013-11-01T07:10:41.070 回答