1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHPでログイン機能を実装する

Last updated at Posted at 2020-07-12

#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()がどのように動いてるかなんとなくイメージがつかめると思う。

以上です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?