Skip to content

saiko1988/php_login_sample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

本リポジトリについて

下記記事を参考に実装したログインフォーム。 本readme.mdは実装に際し調べた内容のメモ。

MySQLのバージョン確認方法 - Qiita

database.php

DB接続と特殊文字エンコードの処理を記述しているファイル。

htmlspecialchars()

HTMLにおいて特殊な意味を持つ特殊文字を、HTMLエンティティに変換する。 通常、オプションにはENT_QUOTES | ENT_HTML5を指定すればよい。

変換前 変換後 備考
& &
" "
' ' ENT_QUOTES及びENT_HTML5が指定されている場合
< &lt;
> &gt;

PDOのオプション

TODO: 後で調べる

index.php

処理の流れ

フォーム送信時の遷移先を自身にし、判定を行う。 入力内容に問題がなければmain.phpに遷移。 問題があった場合はエラーを表示する。

prepareメソッドの?について

後から値が代入されることを示す。 ここでは、SQL実行時にexecuteメソッドの引数として値を配列として渡している。

$stmt = $pdo->prepare('SELECT * FROM User WHERE user_name = ?');
// SQLのパラメータを設定
$params = [];
$params[] = $userName;
// SQL実行
$stmt->execute($params); // '?'には$userNameが代入される

またはbindValueメソッドを使用して渡すこともできる。

$stmt = $pdo->prepare('SELECT * FROM User WHERE user_name = :userName');
$stmt->bindValue(':userName', $userName);
$stmt->execute();

使用関数

session_start()

セッション変数($_SESSION)を利用するための関数。 新しいセッションの開始、あるいは既存のセッションを再開する。

passeord_verify()

入力したパスワードが、password_hash()によって生成されたハッシュにマッチするか調べる。 元のデータを不規則な文字列に置換する処理をハッシュ化と呼び、その置換された文字列がハッシュ。

session_regenerate_id()

セッションを継続したまま、セッションIDを更新する。 ログイン状態をセッション変数に書き込む直前に実行することで、ログイン情報の情報の盗聴やセッションハイジャックを防ぐ。

session_regenerate_id(bool $delete_old_session = false): bool

SQLについて

MySQL 5.7.34ではUNIQUE KEYの行でエラー。 以下のように直すとようになおすとテーブルが作成できた。

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

INSERT INTO `User` (`id`, `user_name`, `password`)
VALUES
    (1,'user','$2y$10$ecRmAWY4n/jLa0tTzIaG7.SMhb1TfdROy3nXeG5aVZorUX1n6/WHO');

About

ログインフォームの実装サンプル

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages