由于某些原因,我的登录页面中的输入似乎没有正确获取进程。正确的用户输入被返回为无效(错误的密码)看了一眼,我看不出任何特别明显的东西。但我只能假设用户名或密码由于某种原因没有通过。更有经验的人是否能够看一看并建议我如何正确行事。多谢你们。 P.S我的表格没问题,所以不包括在内。
function logcon($user, $password )
{
$user = mysqli_real_escape_string($this->conn, $user);
$esc_password = mysqli_real_escape_string($this->conn,$password);
$sql = "SELECT * from USERS WHERE username ='{$user}' AND password='{$password}'";
$result = mysqli_query($this->conn, $sql);
$row = mysqli_fetch_array($result);
return $row;
}
登录页面。
if(isset($_POST['submit'])){
$user=$_POST['user'];
$password=$_POST['password'];
//To ensure that none of the fields are blank when submitting the form if
if(isset($_POST['user']) && isset($_POST['password']))
{
$user = stripslashes($user);
$password = stripslashes($password);
$db1=new dbmember();
$db1->openDB();
$row=$db1->logcon($user, $password);
if($row[0]==1)
{
session_start();
$_SESSION['user'] = $user;
$_SESSION['password'] = $password;
$_SESSION['loggedin'] = "true";
header("location:index.php");
}
else
{
print ('<div id="error">Acess denied, wrong username or password?</div>');
}
}
else
{
print ('<div id="error">Enter something!</div>');
}
}
答案 0 :(得分:0)
您的查询中似乎使用了错误的变量名称。我还建议您考虑对密码进行某种散列和腌制,而不是将它们保存为纯文本。
$sql = "SELECT * from USERS WHERE username ='{$user}' AND password='{$password}'";
应该是
$sql = "SELECT * from USERS WHERE username ='{$user}' AND password='{$esc_password}'";
您的条件检查似乎已关闭,您正在检查结果中的第一个字段是否为= 1,而不是查看是否有返回。
if($row[0]==1)
应该是
if($row)