使用 PHP 显示用户名或密码反馈消息

Posted

技术标签:

【中文标题】使用 PHP 显示用户名或密码反馈消息【英文标题】:Displaying a Username or Password Feedback Message using PHP 【发布时间】:2021-02-08 23:50:10 【问题描述】:

我需要在输入无效的用户名或密码时显示消息。

我进行了设置,以便在发生某些事情时将页面重定向回index.php 页面,但添加了?message=Bad_Username?message=Bad_Password

我还设置了一个 if 语句,以便在满足某些条件时,我可以在用户名或密码字段下方打印消息。

我只是不确定 If 语句需要什么条件才能工作。

这是代码。

if (($_GET['username']))
    echo "<p class='help is-danger'>This username is invalid</p>";
    if(header("location: index.php?message=Bad_Username"))
        echo "<p class='help is-danger'>This username is invalid</p>";
    

【问题讨论】:

$_GET 只是一个数组。知道了这一点,您可以检查键和特定值的存在。 if (isset($_GET['message']) &amp;&amp; $_GET['message'] === 'Bad_Username')) ... if(header... 完全没有意义。根据php.net/manual/en/function.header.php,header() 不返回值,因此对if 进行评估没有任何用处。即使确实如此,也不清楚您要通过这样的声明来实现什么。设置重定向标头告诉浏览器忽略当前响应并转到另一个页面。因此,在当前响应中回显某些内容是没有意义的,因为您刚刚告诉浏览器忽略它。 【参考方案1】:

如果你在get中收到东西,说明用户名不正确。如果您没有收到任何内容,则表示该用户尚未尝试连接。

只需在您的登录页面(您有表单的地方)执行此操作:

if ($_GET['message']==Bad_UserName) 
        echo "<p class='help is-danger'>This username is invalid</p>";
    

如果你想对用户名和密码都这样做,你可以这样做:

if ($_GET['message']==Both_Bad) 
    echo "<p class='help is-danger'>This username and password 
          are invalid</p>";

if ($_GET['message']==Bad_Username) 
    echo "<p class='help is-danger'>This username is invalid</p>";

if ($_GET['message']==Bad_Password) 
    echo "<p class='help is-danger'>This password is invalid</p>";

这是您的登录处理示例:

$user="user1"; //user example
$pass="1234"; //pass example

//method post or get (depends on your form method)
$inputUser = filter_var($_POST['user'], FILTER_SANITIZE_STRING);
$inputPass = filter_var($_POST['pass'], FILTER_SANITIZE_STRING);

if($inputUser!=$user && $inputPass!=$pass)
    header("location: index.php?message=Both_Bad");
elseif ($inputUser!=$user) 
    header("location: index.php?message=Bad_Username");
elseif ($inputPass!=$pass) 
    header("location: index.php?message=Bad_Password");
else
    $_SESSION['user'] = $inputUser //can be the login, id of the user or something else
    header("location: MyNextPage.php");

登录页面和登录处理分为两个文件

【讨论】:

以上是关于使用 PHP 显示用户名或密码反馈消息的主要内容,如果未能解决你的问题,请参考以下文章

登录表单:无论它显示“用户名/密码组合不正确”的消息[关闭]

PHP - 显示更多文章功能反馈

九闪现

PHP登录访问在Web服务器中不起作用

版本发布说明

创建 PHP/MySQL 应用程序 - 所有登录尝试均失败