0

这是一个登录系统。当我希望用户登录时,我希望它获取给定的密码并将其与给定行的“密码”列进行比较......在这种情况下$usernameinput,但我使用的方法不起作用。有什么建议么?

<?php

$usernameinput = $_POST["uname"];
$passwordinput = $_POST["pass"];

if (empty($usernameinput))
{
echo "";
}

else
{

$con = mysql_connect("localhost","STUFFFFF","STUFFFFFF");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

这里是它选择的地方

mysql_select_db("STUFFFFF", $con);

$login = mysql_query("SELECT * FROM Users
WHERE Username='$usernameinput'");


while($row = mysql_fetch_array($result))
  {
    $matchpassword = $row['Password'];
  }
}

if (empty($passwordinput))
{
echo "";
}
else
{

if ("$passwordinput"=="$matchpassword")
{
$sqlusername = $usernameinput;
echo "You were logged in successfully, now you can visit the site as $sqlusername. <br />"; 
}
else
{
echo "You have entered an incorrect password.";
}

}
?>

<form action="login.php" method="post">
Username: <input type="text" name="uname" /> <br />
Password: <input type="password" name="pass" /> <br />
<input value="Login" type="submit" />
</form>
4

3 回答 3

1

您应该使用mysql_fetch_assoc按名称查询结果集中的列。

于 2012-07-20T21:37:21.217 回答
1

为什么不将密码参数添加到 SQL 语句中。

WHERE 用户名 = '" . $usernameinput . "' 和密码 = '" . $passwordinput . "'

然后测试是否有任何结果。

另请注意,出于安全和隐私原因,您应该始终加密数据库中的密码。调查一下。此外,您应该使用 mysqli 函数,而不是 mysql 函数,因为它们具有增强的保护功能。

抱歉格式化,我用的是手机=/

在我的脑海中,它会是这样的:

$rows = mysqli_num_rows($result);

if($rows <1){ //没有找到用户名,密码错误 } else{ //用户名和密码匹配 }

于 2012-07-20T21:57:13.777 回答
1
$sql = mysql_query('SELECT password FROM users WHERE username="'.mysql_real_escape_string($_POST['username']).'"';
$user = mysql_fetch_assoc($sql);
if ($user['password'] == sha1($_POST['password'])) {
    //Logged in
} else {
    //Wrong password
}

这样可以防止 MySQL 注入,并且用户的密码是安全的。

于 2012-07-20T22:01:12.120 回答