PHP中的登录错误信息

6

我是一名初学者,正在学习PHP编程。我想在login.php页面中,如果用户输入了错误的用户名或密码,则显示错误消息。下面是两个页面的代码。login.php页面会提交用户名和密码到check.php页面。如果用户名和密码正确,则会重定向到xyz.php页面,否则会返回到登录页。

login.php//登录页面

<form name="login" enctype="multipart/form-data" action="checkpage.php" method="post">
            <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <th>Username</th>
                <td><input type="text" name="username" value="sandeep" onfocus="this.value=''" class="login-inp" /></td>
            </tr>
            <tr>
                <th>Password</th>
                <td><input type="password" name="password" class="login-inp" /></td>
            </tr>
            <tr>
                <th></th>
                <td valign="top"><input type="checkbox" class="checkbox-size" id="login-check" /><label for="login-check">Remember me</label></td>
            </tr>
            <tr>
                <th></th>
                <td><input type="submit" class="submit-login"  /></td>
            </tr>

            <tr><th></th><td>w want to display error message here..</td></tr>

</table></form>

checkpage.php //连接页面

<?php
    session_start();
    //connecting to db
    $username=$_POST['username'];
    $pwd=$_POST['password'];
    $q="select *from xyz where username='$username' AND password='$pwd'";
    $qry=mysql_query($q);
    if(mysql_num_rows($qry)>0)
    {
        $_SESSION['username']=$username;
        echo "<script>window.open('xyz.php','_self')</script>"; 
        }
        else{

            header("location:login.php");

            }
?>

上述代码正常工作,但我想显示错误消息,怎么办?请指导我。

6个回答

9
您可以在 check.php 脚本中将消息设置为会话,然后在获取并显示后立即取消设置(即“只读一次”):
$_SESSION['message'] = 'Your message';

然后(在login.php中,您希望显示消息的地方):

if (isset($_SESSION['message']))
{
    echo $_SESSION['message'];
    unset($_SESSION['message']);
}

语义化!用于Flash消息的会话。+1。 另外,如果您可以告诉他,一旦用户输入正确的密码并登录,会话应清除“消息”。 - Keval Domadia
消息在显示后立即被清除。仅当登录数据不正确时才设置它。因此,不需要做任何其他操作。我相信 Joomla 也是这样向用户显示消息的,因此在这里没有进行新的发明 :) - MaGnetas

1
在查询中,在 * 和 from 之间加一个空格。
$q="select * from xyz where username='$username' AND password='$pwd'";
  1. 对于错误消息,您可以设置一个标志,如error=1

    header("location:login.php?error=1"); 在login.php中,您可以检查此标志并显示如下消息

      <?php   If(isset($_GET['error']) && $_GET['error'] == 1){ ?>
            <h3>无效的用户名或密码</h3>    
      <?php } ?>
    
  2. 您可以设置一个错误会话,并在login.php中显示它,在显示后取消设置。

    但不要忘记在两个页面中都使用session_start session_start(); //在页面顶部

    在header代码之前添加$_SESSION['error'] = "您的消息"

在login.php文件中。
          <?php if(isset($_SESSION['error'])) {
                echo $_SESSION['error'];
           }

          ?>

0
else {
    echo 'invalid username or password';
    header("location:login.php");
}

0
    if ($result->num_rows > 0)
    {       
        $result = $result->fetch_assoc();

        $_SESSION['id_admin'] =     $result['id_admin'];
        $_SESSION['email'] =        $result['email'];
        $_SESSION['name'] =         $result['name'];
        $_SESSION['surname'] =      $result['surname'];
        $_SESSION['pass'] =         $result['pass'];


        header('Location: http://localhost/admin/dashboard.php');
        exit();
    }
    else 
    {
        echo  '<div class="alert alert-danger">
                <a href="#" class="close" data-dismiss="alert" aria-label="close">Close X</a>
                <p><strong>Alerta!</strong></p>
                Email or password wrong! Please try again!.
            </div>';
    }

    $conn->close(); 
}

?>

把<div> 集成的错误消息放在你想要的任何地方。它应该在任何地方都有效。非常简单。 - David Mark
1
也许你可以在回答中解释为什么以及如何解决这个问题。 - Mike

0

以下是代码,可以让您在代码中显示错误信息。

    <?php
if(isset($_POST['Username'])){
//session_start();
 $username = $_POST['Username'];
 $password =  $_POST['Password'];
//$r = mysqli_num_rows(mysqli_query($conn,"select * from  user where u_nm='".$username."' and password='".$password."'"));
$rs = mysqli_query($conn,"select * from user where Username='".$username."' and Password='".$password."'");
$cnt = mysqli_num_rows($rs);
//echo $username;
//echo $password;
//echo $cnt;
if($cnt >= 1)
{
    
    $_SESSION['username'] = $username;  
    header("Location:lessons.php");
}
else
{
    $msg = "<center><h4>Username or Password are not correct, try again.</center></h4>";
    header("Location:login.php?msg=$msg");
}
}
?>

0

使用Echo命令,并将其包含在页面的最后一个位置!!

<?php
//put it in the end of your php code
else {
    echo 'your message ';
}
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接