人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

現在PHPとPEAR AUTHで認証システムを作成しています。
PEAR AUTHでは特になにもしないと同じIDとパスを使用して同時に複数ログインできてしまいますが
一つのID、パスワードでは同時に一人しかログインできないようにしたいのですがどのようにしたらよいでしょうか

サンプルソースなど示していただけると助かります
一番参考になった回答をいただけた方に150p差し上げます

●質問者: jayz
●カテゴリ:ウェブ制作
✍キーワード:Pear PHP サンプルソース システム パス
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● t_shiono
●60ポイント

flockの排他制御+セッションとファイルのチェックでどうでしょうか?

以下の感じです。

$lockDir = "ロックファイルディレクトリ";
$a = new Auth( ・・・ );
$a->start();
if ($a->getAuth()) {
 認証エラー
}

$key = NULL;

$lock = $lockDir . $a->getAuthData("ID");
$fp = fopen($lock, "r+");
if (!flock($fp, LOCK_EX)) {
 $key = fread($fp, 128)
 if (strlen($key) == 0) { // 誰もログインしていない
 $key = キー文字列生成
 fwrite($fp, $key);
 $_SESSION['key'] = $key;
 }
}
 
flock($fp, LOCK_UN);
fclose($fp);

if ($key == $_SESSION['key']) {
 正常ログイン時の処理
} else {
 他のユーザログイン時の処理
}

ただし、この方法では、正しくログアウトしないと、他の人がログインできなくなります。また、ログアウト時には、ロックファイルの中を空にします。

◎質問者からの返答

ご回答ありがとうございます

あまり実用的ではなさそうですね・・

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ