0

今日、ログインを行うコードを作成しましたが、残念ながらそれはできません。

ここに私が試したものがあります:

include('php/mysqlcon.php');
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = sha1($_POST['password']);
    $query = mysql_query("SELECT * FROM user WHERE username=$username AND password=$password");
    $query_rows = mysql_num_rows($query);
    if($query_rows > 0) {
        session_start();
        $_SESSION['username'] = $username;
        header('Location: index.php');
    } else {
        echo('bad login');
    }
}

mysqlの詳細はmysqlcon.phpにあり、正しいと確信しています

4

4 に答える 4

7

クエリでユーザー名とパスワードを引用符で囲む必要があります。また、コードは mysql インジェクションを起こしやすいため、必ず入力をフィルタリングしてください。

于 2012-10-20T22:45:23.983 に答える
2

$usernamemysql クエリを作成するときは、 andを引用符で囲む必要があり$passwordます。現在、ほとんどの場合、不完全なクエリになってしまいます。

また、「sql-injection php を防ぐ方法」をグーグルで検索する必要があります。現在、このタイプの攻撃を受けやすいです (深刻な問題につながる可能性があります)。

于 2012-10-20T22:45:22.257 に答える
0

"SELECT * FROM user WHERE username='$username' AND password='$password'"

于 2012-10-20T22:47:08.290 に答える
0

準備されたステートメントを使用して、資格情報を SQL クエリのパラメーターに入れます。

于 2012-10-20T22:46:46.907 に答える