#PHPでログイン機能を実装する
やっとこさ機能を実装できたので、概要をまとめてみる。
今回作成したのは、emailとpasswordだけの機能。
emailで検索して、フォームに入力したpasswordとDBにハッシュ化されて保存されたpasswordと比較(password_verify)する。
つまづいて長引いた内容について。
##パスワードのhash化について
そもそもパスワードのhash化ってなんじゃいということについて。
パスワードをそのままDBに保存すると危険である。
ということで、password_hashを使って、暗号化する必要がある。
ここで大事なのは、
1.password_hashは不可逆である(元の形に戻せない)
2.パスワードのハッシュ化の仕方
pasword_hash(暗号化したい文字列, PASSWORD_DEFAULT)
例えばフォームにpasswordというnameで入力したパスワードをハッシュ化したい場合は、
pasword_hash($_POST['password'], PASSWORD_DEFAULT)
こんな感じ。
##password_verify()の使い方
password_verify()の使い方だけど、
password_verify(ハッシュ化されてない文字列, ハッシュ化された文字列)
で比較を行う。
この部分の使い方がわからなくて、どちらもハッシュ化された文字列で比較していた・・・。
実際にはこういう風に使う。
if (password_verify($login_password, $member['password'])) {
echo 'ログインしました。';
} else {
echo 'メールアドレスもしくはパスワードが間違っています。';
}
でもこんなのって分からない。login_passwordの変数どこからきたの、$member['password']って何なのってなってしまう。
ので、password_verifyの機能を確認するためには以下の構文を使ってみる。
$pass = '111111';
$hash = password_hash($pass, PASSWORD_DEFAULT);
if(password_verify($pass, $hash)){
echo '成功';
}else{
echo '失敗';
}
これで成功と表示されれば、password_hash()がどのように動いてるかなんとなくイメージがつかめると思う。
以上です。