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

パスワードパラメータをSQLステートメントに追加してみませんか。

WHERE username='"。$usernameinput。"'andpassword='"。$passwordinput。"'

次に、結果があるかどうかをテストします。

また、セキュリティとプライバシーの理由から、データベース内のパスワードは常に暗号化する必要があることに注意してください。それを調べてください。さらに、保護が強化されているため、mysql関数ではなくmysqli関数を使用する必要があります。

フォーマットについて申し訳ありませんが、私は電話を使用しています= /

私の頭のてっぺんからそれは次のようになります:

$ rows = mysqli_num_rows($ result);

if($ rows <1){//ユーザー名が見つかりません、間違ったpw}else{//ユーザー名とpwが一致します}

于 2012-07-20T21:57:13.777 に答える
1

mysql_fetch_assoc結果セットの列を名前でクエリするために使用する必要があります。

于 2012-07-20T21:37:21.217 に答える
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 に答える