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';
}
}
}
どんな助けでも大歓迎です。