获取密码时,提示“用户名和密码不正确”怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取密码时,提示“用户名和密码不正确”怎么办?相关的知识,希望对你有一定的参考价值。
输入正确的天翼手机号码,再点击“获取密码”,将获取到的密码正确输入后再试,如仍不能使用,可以通过以下方式报障:1、通过在线客服报障;4、拨打10000选择人工服务报障。了解更多服务优惠点击下方的“官方网址”客服222为你解答。 参考技术A 您好您可以登陆网上营业厅-登陆-忘记密码,然后根据页面提示操作重置密码试一下。详情
- 在线客服官方服务
- 官方网站费用查询充值交费业务办理宽带提速
用户名和密码不匹配输出
【中文标题】用户名和密码不匹配输出【英文标题】:Username and Password Don't Match Output 【发布时间】:2021-04-10 00:05:15 【问题描述】:我正在使用 mysql 和 PHP 创建一个注册系统。我已经能够将系统连接到数据库,并且它适用于输入的用户名和密码正确的情况。但是,当用户名和密码不正确时(即用户名/密码对未存储在数据库中的任何时候),它只会导致空白页。目前,我的代码有它,所以当用户名和密码不正确时,它会打印我们的“密码用户名无效”。请参阅下面的代码,任何帮助表示赞赏。提前谢谢!
<?php
require_once 'source/session.php';
require_once 'source/db_connect.php';
if(isset($_POST['login-btn']))
$user = $_POST['user-name'];
$password = $_POST['user-pass'];
try
$SQLQuery = "SELECT * FROM users WHERE username = :username";
$statement = $conn->prepare($SQLQuery);
$statement->execute(array(':username' => $user));
while($row = $statement->fetch())
$id = $row['id'];
$hashed_password = $row['password'];
$username = $row['username'];
if(password_verify($password, $hashed_password))
$_SESSION['id'] = $id;
$_SESSION['username'] = $username;
header('location: dashboard.php');
else
echo "Error: Invalid username or password";
catch (PDOException $e)
echo "Error: " . $e->getMessage();
?>
【问题讨论】:
猜测它是实际上将您引导到dashboard.php,但它在那个页面上没有得到正确处理。 或您的帖子变量未设置。如果您在所有 if 语句之外添加回显,则输出是什么,例如if($post)... echo "didn't go in"
;
【参考方案1】:
嗯,目前您的 SQL 查询将为不存在的用户返回一个包含 0 行的集合,但这不会导致错误。它只是一个空的结果集。因此它不会通过while
循环,它只会终止而没有错误。
您的逻辑忽略了检查$statement->rowCount()
是否为零。
澄清一下这个答案是否令人困惑:如果您输入一个不存在的用户名,您将得到 0 个结果...然后您执行 while(0),这样您就永远不会进入代码的那部分。没有进行密码检查。并且不会引发错误,因此您永远不会逃避 try 并进入代码的 catch 部分。如果用户名从数据库中出现零结果,则此处不返回任何内容。在这种情况下,您需要添加另一个错误。
【讨论】:
感谢您的回复。你能解释一下我应该如何解决这个问题吗? 在 $statement->execute 之后,您需要使用 $statement->rowCount() 测试返回了多少行。如果数字为零,则用户名不匹配任何内容,您应该立即发送错误。 如果此答案对您有帮助,请标记为正确。以上是关于获取密码时,提示“用户名和密码不正确”怎么办?的主要内容,如果未能解决你的问题,请参考以下文章