*

【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;

ユーザーの作成からログインまで

  1. example3.phpにアクセスしてユーザーを作成します。
  2. example3.phpの役割は3つあります。
    1つ目は登録フォームの表示です。
    2つ目はフォームの入力を受け取ってメールを送信することです。
    3つ目はアクティベーションコードを受け取ってアカウントを有効化します。

  3. 入力したメールアドレスにアクティベーション用のメールが届くので本文のリンクに飛びます
  4. example3.phpがアカウントを有効化します。

  5. アクティベーション成功のメッセージが表示されるので、example1.phpに移動してログインします。
  6. ログインに成功するとログアウトのリンクだけのページに移動します。

「Remember me?」のチェックボックスをチェックしてログインするとクッキーにユーザー情報を記録して、次回のログイン操作を省略できます。

が、チェックしてログインするとログアウトできなくなります。

flexibleAccess->logoutで実行しているクッキーの削除が行われないためです。

flexibleAccess->logoutメソッドを編集します。

これを

setcookie($this->remCookieName, ”, time()-3600);

こうする

setcookie($this->remCookieName, ”, time()-3600, ‘/’, $this->remCookieDomain);

と、うまく行きました。

なぜ上記で削除されなかったのか謎です。

これでUserClassの機能をひと通り使ったことになります。

あとは実際に使用するページに配置していくことになります。

実際に実装してみる

サンプルのページは実際のサイトで使うような実用的な画面遷移になっていません。
続いては、実際のサイトに適用していきます。

フローを復習

  1. 登録
    1. メイン画面:登録
    2. ユーザー登録画面:登録情報を送信
    3. 送信完了画面
    4. メール受信:アクティベーションリンクにアクセス
    5. アクティベーション画面:アクティベーション結果を表示
  2. ログイン
    1. ログイン画面:ID、PWを入力
    2. ログイン結果画面:ログイン結果を表示
  3. ログアウト
    1. メイン画面:ログアウト
    2. ログアウト画面:ログアウト成功

以上

関連記事

no image

【php】メッセージをログファイルに吐いてデバッグする

javascriptであればfirebugで簡単にデバッグできるのですが、サーバー側で動くphpなど

記事を読む

no image

【php】MySQLを操作する

MySQLを操作する際のテンプレ //DBに接続する //直近に実行された MySQ

記事を読む

no image

[php] プログラマ2年生がPHPUnit始めてみた

何度も挫折していたテスト自動化ですが、こちらのエントリーを読んで前に進めそうです。 3分でできる俺

記事を読む

no image

【php】基礎のPHP速習トレーニング

//インポート require_once dirname(__FILE__) . '/he

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

no image
知らないと損をする6つのライセンスまとめ

オープンソースやフリーウェア、フリー素材などが巷に溢れ、それらを利用す

no image
ガリレオ:ニュースブラウザをリリースしました。

概要 ガリレオはニュースを読んだり、検索する機能に特化したブラウザア

no image
【android】Activityとプロセスのライフサイクル

またもやライフサイクル周りでハマったのですが、Androidのライフサ

→もっと見る

PAGE TOP ↑