3

Slim Jquery と Ajax を使用してログイン システムを作成しようとしています。最小限の問題でログイン部分が機能するようになりました。今は、パスワードをハッシュできるようにする必要があります。md5、sha1、および/またはソルトを使用してハッシュできることは知っていますが、代わりに password_hash を使用することをお勧めします。bindParam を使用している間は、変数の周りに配置できるため、言及した他の 3 つのいずれかでハッシュする方法を知っています。私の質問は、bindParam で password_hash をどのように使用するかです。このサイトで見つけた最も近い回答は、あまり役に立ちませんでした。

私の現在のコードは次のとおりです。

$app->post('/addUser/', 'addUser');
function addUser()
{
    $request = \Slim\Slim::getInstance()->request();
    $q = json_decode($request->getBody());

    $sql = "INSERT INTO users(firstName, lastName, userName, password) VALUES (:firstName, :lastName, :userName, :password)";

    try{
        $dbConnection();
        $stmt=$db->prepare($sql);
        $stmt->bindParam("firstName", $q->firstName);
        $stmt->bindParam("lastName", $q->lastName);
        $stmt->bindParam("userName", $q->userName);
        $stmt->bindParam("password", $q->password);
        $stmt->execute();
        $db=null;
    }
    catch(PDOException $e){
        echo $e->getMessage();
    }
}

コードを確認する:

$app->post('/logIn/', 'lonIn');
function logIn()
{
    $request = \Slim\Slim::getInstance()->request();
    $q = json_decode($request->getBody());

    $sql = "SELECT * FROM users WHERE userName=:userName";
    try{
        $db = getConnection();
        $stmt=$db->prepare($sql);
        $stmt->bindParam("userName", $q->userName);
        $execute = $stmt->execute();
        $db = null;
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
    if($execute == true)
    {
        $array = $stmt->fetch(PDO::FETCH_ASSOC);
        $hashedPassword = $array['password'];
        if(password_verify($q->password), $hashedPassword))
        {
            echo 'Valid';
        }
        else
        {
            echo 'Invalid';
        }
    }
}

どんな助けでも大歓迎です。

4

1 に答える 1