0

ユーザーがメイン Web サイトにアクセスするためにログインする必要があるログイン システムがあります。ただし、検証は機能していません。

主にpassword機能していない機能です。なぜ何か提案はありますか?

<?php

session_start();

$login = mysql_real_escape_string($_POST['login']);
$password = mysql_real_escape_string($_POST['password']);

if ($login&&$password)
{

$connect = mysql_connect("localhost", "root", "") or die("Couldn't connect");
mysql_select_db("a&e") or die("Couldn't find db");

$query = mysql_query("SELECT * FROM users WHERE login='$login'");

$numrows = mysql_num_rows($query);

if ($numrows==!0)
{
//code to login

while ($row = mysql_fetch_assoc($query))
{
    $dbusername = $row['login'];
    $dbpassword = $row['password'];
}

//check to see if they match
if($login==$dbusername&&$password==$password)
{
$_SESSION['login']=$username;
$_SESSION['password']=$password;
     sleep(5);
    header('Location: nindex.php');
    die(); 
}
else
die ("incorrect password");

}
else
    die("That user does not exist");
}
else
    die("please provide a  username and password");

?>
4

2 に答える 2

1

コードにいくつかの問題があります。これを試してください

<?php

session_start();

$login = mysql_real_escape_string($_POST['login']);
$password = mysql_real_escape_string($_POST['password']);

if ($login&&$password)
{

$connect = mysql_connect("localhost", "root", "") or die("Couldn't connect");
mysql_select_db("a&e") or die("Couldn't find db");

$query = mysql_query("SELECT * FROM users WHERE login='".$login."' AND password='".$password."'");

$numrows = mysql_num_rows($query);

    if ($numrows > 0)
    {
    //code to login
        header('Location: nindex.php');
        die(); 
    }
    else
    {
    echo "incorrect username or password";
    }
}
?>
于 2013-04-24T19:07:51.903 に答える
0

4つのことに気づきました。

1)一致するかどうかを確認すると、「$dbpassword」ではなく、$password と $password が比較されます。

2) なぜ「sleep(5)」と呼ぶのですか?

3) データベースに保存する前にパスワードを暗号化する必要があります。これは、サイトがハッキングされた場合、ユーザーのパスワードが最終的に悪者の手に渡ることになるためです。

4) パスワードをセッション変数に保存しないでください (セキュリティ上の理由から)

于 2013-04-24T19:04:39.813 に答える