min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

PHPでログイン画面を実装する(セッション管理あり)

PHPでログイン画面を実装する。

f:id:min117:20181222164148p:plain

新規登録すると、次回からログインできるようになる。

f:id:min117:20181222164326p:plain

このサイトそのまま写経する。ただしPHPのファイル名だけは変えた

qiita.com

試した環境は fedora 21。DBは mysqlMariaDB)。だいぶ古いが、Linuxならどこでも動くと思う。

 

<DBの準備>

dbのログインユーザーが「root」パスワード「12345」だと仮定して進める。 

 

mysqlにログインする。

$ mysql -u root -p

$ Enter password:12345

 

データベースを作る。

$ create database loginManagement

 

テーブルを作る。

$ CREATE TABLE `User` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'AI', `name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '氏名', `password` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'パスワード', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) )  DEFAULT CHARSET=utf8mb4;

f:id:min117:20181222151105p:plain

 

テーブル名を確認する。

MariaDB> show tables;

 

テーブルの内容を確認する。

MariaDB> select * from User;

f:id:min117:20181222151638p:plain

 

 

 

PHPコーディング>

ソースはこれ。

f:id:min117:20181222164559p:plain

ただし 05_password.php だけはここからダウンロードした(password.php頭に 05_ をつけてリネームした)

GitHub - ircmaxell/password_compat: Compatibility with the password_* functions that ship with PHP 5.5

f:id:min117:20181222165300p:plain

f:id:min117:20181222165506p:plain

 

ソースを上から順に見ていく。

$ vim 05_Login.php

f:id:min117:20181222165008p:plain

f:id:min117:20181222165051p:plain

 

$ vim 05_Logout.php

f:id:min117:20181222165715p:plain

 

$ vim 05_Main.php

f:id:min117:20181222165814p:plain

 

$ vim 05_SignUp.php

f:id:min117:20181222170047p:plain

f:id:min117:20181222170129p:plain

 

<動作テスト>

Webサイトに配置して 05_Login.php を開き「新規登録」してみる。

f:id:min117:20181222171413p:plain

 

新規登録画面(05_SignUp.php)が開いた。

ユーザー名「test2」、パスワード「abcdefg」として新規登録ボタンを押してみる。

f:id:min117:20181222171456p:plain

 

正常に登録完了しIDとパスワードが表示された。

f:id:min117:20181222171539p:plain

 

もう一度ログイン画面に戻って test2 でログインできるか試す。

f:id:min117:20181222171619p:plain

 

バッチリ認証されログインできている。「ログアウト」してみる。f:id:min117:20181222171658p:plain

 

ログアウト(05_Logout.php)も正常に動いた。

f:id:min117:20181222171722p:plain

 

こういうシンプルなコードがたくさん欲しい。集める。