一人にIDとパスワードを伝えたのですが複数人がそのIDとパスワードを使いログインしているようです
1人1ID制にしたいと思います。
そこで、最後にログインした人を優先して残し、最初にログインしている人をログアウトさせたいです
このようなプログラムはとても組めません。すでに、組んであるフリーのプログラムなどはないでしょうか?
ご存知の方は教えてください
ipアドレスで識別してもいいかも知れません。
アクセス解析で、取得できますね。
http://analyzer.netowl.jp/
ipアドレスによるアクセス制限のやり方
http://www.shtml.jp/htaccess/host.html
完全に多重ログイン禁止をする仕組みを作るのはできないのですが、ある程度ブロックをかけることができる方法として、セッションを使った方法があります。
下はPHPとcookieを使う方法です。DBを使うと防御がより強くなるのですが、作るのも大変なので、一番簡単な方法を示します。
今使っているログイン画面、多重ログイン禁止したい画面、ログアウト画面の冒頭で、下のようなPHPスクリプトを追加してください。
セッションIDを登録するcookieの寿命を180秒としているので、180秒間に操作がないと多重ログインできるようになります。この数値は$lifetimeを変更してください。
制御の性質上、ライブラリやフレームワーク、Webサーバの機能では実現できません。
<?php $lifetime = 180; //秒 session_set_cookie_params($lifetime); session_start(); $_SESSION['login'] = TRUE; ?>
<?php session_start(); if (! $_SESSION['login']) exit(9); //またはエラー画面へジャンプ $_SESSION['login'] = TRUE; ?>
<?php session_unset(); ?>
すいません このプログラムはどういう仕組なのでしょうか?
basic認証のIDをcookieがサーバーにアップロードしてるのでしょうか?
違います。
basic認証のIDは保存していません。
ログインしたかどうかをセッションID(実体はCookie)に持たせています。
社内LANから複数の人がログインしていると、全員が同じIPアドレスになり区別できませんよ。
2014/05/05 12:26:23snow0214さんのおっしゃる通りです。
2014/05/06 07:39:36