【php】UserClassでアカウント管理を実装してみる
公開日:
:
最終更新日:2012/07/10
php
大抵のフレームワークにはアカウント管理のモジュールがあると思いますが、
「フレームワークを使うほどでもないけどユーザーは管理したい」
感じだったのでUserClassを使ってみました。
概要
・ユーザーの登録とメールでのアクティベーション
・ユーザーのログイン状態を管理
・パスワードが暗号化して保存される
テスト実行してみる
まずはどんなもんかとりあえず動かしてみます。
モジュールをダウンロード
ダウンロードすると管理するクラスと使い方のサンプルが入っています。
・access.class.php
クラス「flexibleAccess」が定義されています。
これをインスタンス化してアカウントを管理します。
・example1.php
ログイン画面。ログイン状態の場合はログアウトリンクが表示される。
・example2.php
簡易版ユーザー登録。
メールでの本人確認などしないのでアカウント作り放題のため実用で使うことはないと思います。
無視です。
・example3.php
ユーザー登録 → メール送信 → メールのアクチベーション用リンク(行き先はexample3.php自身)をクリック → アクティベーション成功
までの実演用ページ。
「メール受信後◯◯分以内にアクティベーションして下さい」みたいなのは別途実装の必要があります。
テーブルを作成
ユーザー管理用のテーブルを作成します。
example3.phpのコメントにあるSQLをそのまま実行します。
CREATE TABLE `users` ( `userID` mediumint(8) unsigned NOT NULL auto_increment, `username` varchar(50) NOT NULL default '', `password` varchar(100) NOT NULL default '', `email` varchar(150) NOT NULL default '', `activationHash` varchar(150) NOT NULL default '', `active` tinyint(1) NOT NULL default '0', PRIMARY KEY (`userID`), UNIQUE KEY `username` (`username`), UNIQUE KEY `email` (`email`), UNIQUE KEY `activationHash` (`activationHash`), KEY `active` (`active`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ユーザーの作成からログインまで
- example3.phpにアクセスしてユーザーを作成します。
- 入力したメールアドレスにアクティベーション用のメールが届くので本文のリンクに飛びます
- アクティベーション成功のメッセージが表示されるので、example1.phpに移動してログインします。
- ログインに成功するとログアウトのリンクだけのページに移動します。
example3.phpの役割は3つあります。
1つ目は登録フォームの表示です。
2つ目はフォームの入力を受け取ってメールを送信することです。
3つ目はアクティベーションコードを受け取ってアカウントを有効化します。
example3.phpがアカウントを有効化します。
「Remember me?」のチェックボックスをチェックしてログインするとクッキーにユーザー情報を記録して、次回のログイン操作を省略できます。
が、チェックしてログインするとログアウトできなくなります。
flexibleAccess->logoutで実行しているクッキーの削除が行われないためです。
flexibleAccess->logoutメソッドを編集します。
これを
setcookie($this->remCookieName, ”, time()-3600);
こうする
setcookie($this->remCookieName, ”, time()-3600, ‘/’, $this->remCookieDomain);
と、うまく行きました。
なぜ上記で削除されなかったのか謎です。
これでUserClassの機能をひと通り使ったことになります。
あとは実際に使用するページに配置していくことになります。
実際に実装してみる
サンプルのページは実際のサイトで使うような実用的な画面遷移になっていません。
続いては、実際のサイトに適用していきます。
フローを復習
- 登録
- メイン画面:登録
- ユーザー登録画面:登録情報を送信
- 送信完了画面
- メール受信:アクティベーションリンクにアクセス
- アクティベーション画面:アクティベーション結果を表示
- ログイン
- ログイン画面:ID、PWを入力
- ログイン結果画面:ログイン結果を表示
- ログアウト
- メイン画面:ログアウト
- ログアウト画面:ログアウト成功
以上
関連記事
-
-
【php】メッセージをログファイルに吐いてデバッグする
javascriptであればfirebugで簡単にデバッグできるのですが、サーバー側で動くphpなど
-
-
【php】MySQLを操作する
MySQLを操作する際のテンプレ //DBに接続する //直近に実行された MySQ
-
-
[php] プログラマ2年生がPHPUnit始めてみた
何度も挫折していたテスト自動化ですが、こちらのエントリーを読んで前に進めそうです。 3分でできる俺
-
-
【php】基礎のPHP速習トレーニング
//インポート require_once dirname(__FILE__) . '/he
- PREV
- 【php】MySQLを操作する
- NEXT
- Galaxy Nexusでデバッグできなくなった。