sql >> データベース >  >> RDS >> Mysql

mysqli_escape_string関数を使用してエラーを取得する

    コードには非常に多くの問題があり、現在の問題を修正して解決策を提供することは非常に困難です。

    まず、MD5はパスワードの保存に安全に使用できるとは見なされなくなりました。

    相談する:

    さらに、プリペアドステートメントを正しく使用していません。

    私が述べたように、 mysqli_escape_string() 関数では、最初のパラメータとしてデータベース接続を渡す必要があります:

    ご自分でお願いします これを使用して、ircmaxellの回答の1つ https://stackoverflow.com/a/29778421/

    彼の答えから引き出された:

    ライブラリを使用するだけです。真剣に。それらは理由があります。

    自分でやらないでください。独自のソルトを作成している場合は、間違っています 。それを処理するライブラリを使用する必要があります。

    $dbh = new PDO(...);
    
    $username = $_POST["username"];
    $email = $_POST["email"];
    $password = $_POST["password"];
    $hash = password_hash($password, PASSWORD_DEFAULT);
    
    $stmt = $dbh->prepare("insert into users set username=?, email=?, password=?");
    $stmt->execute([$username, $email, $hash]);
    

    そしてログイン時:

    $sql = "SELECT * FROM users WHERE username = ?";
    $stmt = $dbh->prepare($sql);
    $result = $stmt->execute([$_POST['username']]);
    $users = $result->fetchAll();
    if (isset($users[0]) {
        if (password_verify($_POST['password'], $users[0]->password) {
            // valid login
        } else {
            // invalid password
        }
    } else {
        // invalid username
    }
    


    1. MapReduceがHadoopでどのように機能するか

    2. SQLServerのアクティブなセッションとステータス

    3. myisamは、「select」クエリを処理している場合でも、テーブルロックをテーブルに配置しますか?

    4. CHECKADDCONSTRAINTの後にCHECKCONSTRAINTとADDCONSTRAINTが続きます