PHPでログイン機能をつくる

簡単なログイン機能をつくる必要があり、
ちょっと調べてみた。

参考にしたのは下記のページ。

【初心者向け】PHP5とMySQLでつくるログイン機能のサンプルアプリケーション

 

まずデータベースの準備をする。

参考サイトのとおりid,name,passwordのカラムを作成して、
idはオートインクリメントにした。
また、重複したユーザーは登録できないほうが良いので
nameにはUNIQUE制約をつけた。

phpMyAdminでの表示

 

このデータベースにレコードを追加する画面の作成については
参考サイトに説明がなかったので、まずはそこからはじめる。

まずは入力フォームのHTML。
簡単にこんな感じ。add.htmlとした。

送信先はinsert.phpとする。

 

次はinsert.phpの作成。
一旦、下記のような感じで作成。

 

これで先程のデータベースにレコードは追加できるが、
このままではパスワードが平文で登録されてしまうので改善する。

 

add.htmlからPOSTされたパスワードを受け取ったら
insert.phpでハッシュ化をしてからDBにinsertをするように変更。

まずpassword_compatというライブラリをダウンロードをして、
/lib/password.php を任意の場所にセット。

私はinsert.phpと同じ階層に置いた。

require ‘password.php’; で呼び出して、POSTで受け取った$passwordを
$hashpass = password_hash($password, PASSWORD_DEFAULT); という
かたちでハッシュ化して、その$hashpassをDBにinsertする。

 

これでログインユーザー情報の作成はOK。

一応同じ内容で作成をしたページへのリンクをサンプルとして下に貼っておく。
勝手にユーザーを追加して試してもらっても特に問題はない。

http://516.jp/login/add.html
追記:下で作成したlogin.phpへのリンクを追加した。

 

続いてログイン画面。
まずはlogin.php。

参考サイトのコードを丸ごとコピーして使ってみると
データベースの接続部分でエラーが出たので
$mysqli->select_db($db['dbname']); の部分を
$mysqli->select_db(‘dbname’); に変更した。

あと、先程のユーザー情報登録ページへのリンクを貼った。

 

 

続いてmain.php

 

最後にlogout.php。

特に問題なく動いた。

作成したページのURLは下記。

http://516.jp/login/login.php

 

コピーしてきたコードの意味はあまり理解してないが、
とりあえずメモ書きだけ残しておく。

 

(後日追記)
NAMEが全角文字でも登録ができてしまうためにエラーが出てしまう事に気が付いた。

なので下のコードを追加した。