我正在尝试确认用户是否提交了有效凭据。
HTML
<form action="assets/php/account/login_user.php" method="post" id="login" class="center">
<div id="register_errorloc"></div>
<div class="form-group">
<input type="text" name="login_username" id="login_username" class="form-control" placeholder="Username" />
</div>
<div class="form-group">
<input type="password" name="login_password" id="login_password" class="form-control" placeholder="Password" />
</div>
<div class="form-group">
<input type="submit" value="login" id="submit_login" class="btn btn-success form-control"/>
</div>
</form>
PHP
$username = trim($_POST['login_username']);
$password = hash('sha512',trim($_POST['login_password']));
//to check if values are correct by myself
echo '<br>' . $username . '<br>' . $password . '<br>';
include_once '../../../assets/php/DB/DBConnect.php';
//check if valid credentials are entered
$stmt = $conn->prepare("SELECT * FROM tbl_users WHERE username = ?");
echo $stmt->bind_param('s', $username);
echo $stmt->execute();
echo $stmt->store_result();
if($stmt->num_rows == 1){
echo 'Good Creds';
}else{
echo 'Bad Creds';
}
当我这样做时,它总是显示0结果。当我将查询字符串更改为
时$stmt = $conn->prepare('SELECT * FROM tbl_users WHERE username = "abc"');
我得到了我正在寻找的结果。我很困惑,因为我在不同的页面上使用相同的方法,它的工作就像一个魅力。
截图
编辑:添加了所有代码。
编辑2:添加了屏幕截图
编辑3:添加表单HTML
编辑4:
表单提交没有任何问题。当我像这样硬编码变量时:
$username ='abc';
它仍无效
答案 0 :(得分:2)
<击> 对不起,但你发布的屏幕截图对我们没有帮助。
为了避免进一步评论,我提交以下内容。
您的表单及其相关元素可能失败,需要POST方法,并且每个表单都存在名称属性。
即:
<form method="post" action="???">
<input type="text" name="login_username">
...
修改强>
尝试以下内容,评论过于广泛:
$check = $conn->prepare("SELECT * FROM tbl_users WHERE username=?");
$check->bind_param("s", $username);
$check->execute();
$check->store_result();
$row_chqry = $check->num_rows;
if($row_chqry > 0 ) {
echo "Exists";
$check->close();
$conn->close();
}
击> <击> 撞击>
编辑#2:
OP发布了一个回答,声明他们使用相同的变量进行数据库连接。我会立即发现并引发冲突的事情,已发布完整代码。我之前已经看过很多次,并且还记得为他们发布答案。至于它们到底在哪里,我需要一些时间来找到它们;但我确实记得发布相关问题的答案。
解决方案:
答案 1 :(得分:-1)
我终于找到了错误:
连接到我的数据库时,我使用:
row.insertCell(0)
在我的提交脚本中,我也使用$servername = "";
$username = "";
$password = "";
$db = "";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $db);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
。包括DBconnection文件导致我的本地变量(我从表单中获取的$username
)被DBconnect中的用户名覆盖。