ホームページ >バックエンド開発 >PHPチュートリアル >同じアカウントで最大 10 人が同時にオンラインログインできるシステムです。どうすればよいですか?

同じアカウントで最大 10 人が同時にオンラインログインできるシステムです。どうすればよいですか?

WBOY
WBOYオリジナル
2016-06-13 13:28:371597ブラウズ

同じアカウントで最大 10 人が同時にオンラインログインできるシステムです。どうすればよいですか?
システムでは、同じアカウントで最大 10 人が同時にオンラインにログインできます。これを行うにはどうすればよいですか?みんながどう思っているか教えてください。 。

-----解決策--------------------------------
それは内部システムですか?

ログテーブルを作成します
ip user_id last_time

10 分以内にオンラインになると仮定します
WHERE last_time+600 > time() より大きい場合は GROUP BY user_id を追加します10 未満のログインは許可されていません。
last_time+600
詳細は実際にテストする必要があります...
------解決策------------------
ログインはログイン、制限は制限です。

セッションごとに 1 回のログイン。通常のユーザーと変わりません。

この制限は、アカウントごとに 1 つのデータベース カウント フィールドで十分です。問題は、特定のユーザーの特定のログインを期限切れにする方法です。
ユーザーが毎回ログアウトする場合は、データベースを -1 操作するだけです。 ユーザーがログアウトしない場合、セッションの有効期限が切れたときにデータベースは -1 とカウントする必要がありますが、これはユーザーにとってより合理的です。ただし、セッションの有効期間と -1 のカウントを自動的に関連付けることは困難です。つまり、特定のログイン セッションが期限切れになっているにもかかわらず、データベースには -1 が存在せず、これはユーザーにとって不公平です。

したがって、データベース数 -1 を操作するためにセッション有効期限コールバックを登録できれば素晴らしいのですが、コールバックを呼び出すように設定できる php.ini があるかどうかはわかりません。 phpファイル? おそらくそうではありません。 。

そこで、私が最終的に出した解決策は次のとおりです。ユーザーはログアウトせずに常にログインしたままにし、メンテナンスのために別の COOKIE に依存します。 。 。 crontab に PHP タイミング スクリプトを実行させて、N 回以上ログインしているユーザーの COOKIE レコードを削除し、テクノロジーを -1 にします。これにより、最初にログインした学生は何も言うことがなくなります。再度ログインを試行することしかできません。

テーブルを追加します: AUTO_ID USER COOKIE。各 USER の各ログイン ポイントは、このテーブル内の同じ USER の COOKIE を 10 個以下に制限します。これは、10 人のユーザーのログ記録が制限されることを意味します。 COOKIE が生成され送信されている限り、ログアウトしない限り、ログインごとに一定期間オンラインのままになります。PHP はデータベース内の COOKIE をチェックすることによってそのユーザーを検出します。ログアウトしていないユーザーをクリーンアップするには、crontab を実行して定期的にクリーンアップするしかありません。




まとめ! ~~~~~ 実際には、SESSION は常に期限切れになり、期限切れになると追跡できないため、セッションをデータベースに永続化する必要があるからです。 ! !
第二に、SESSION の有効期限が切れており、コールバック関数がないため、タイムアウト COOKIE をクリーンアップするには永続化後に crontab を定期的に実行するしかありません~~~~


------解決策---------

話し合う

ログインはログイン、制限は制限です。

セッションごとに 1 回のログイン。通常のユーザーと変わりません。

この制限は、アカウントごとに 1 つのデータベース カウント フィールドで十分です。問題は、特定のユーザーの特定のログインを期限切れにする方法です。
ユーザーが毎回ログアウトする場合は、データベースを -1 操作するだけです。 ユーザーがログアウトしない場合、セッションの有効期限が切れたときにデータベースは -1 とカウントする必要がありますが、これはユーザーにとってより合理的です。しかし、カウント -1、つまり特定のログインにセッションの有効期間を自動的に関連付けることは困難です...

------解決策------------------
セッション ハンドラーをカスタマイズするだけで済みます。利点は、他の場所でコードを変更する必要がないことです。
http://ca3.php.net/manual/en/class.sessionhandler.php


もちろん、上記の方法も使用できます

特定のニーズと既存の実装によって異なります






------解決策---------
話し合う

引用:

ログインはログイン、制限は制限です。

セッションごとに 1 回のログイン。通常のユーザーと変わりません。

この制限は、アカウントごとに 1 つのデータベース カウント フィールドで十分です。問題は、特定のユーザーの特定のログインを期限切れにする方法です。
ユーザーが毎回ログアウトする場合は、データベースを -1 操作するだけです。 ユーザーがログアウトしない場合、セッションの有効期限が切れたときにデータベースは -1 とカウントする必要がありますが、これはユーザーにとってより合理的です。でも有効期限やセッション数を取得するのが難しい……

------解決策---------
話し合う

セッション ハンドラーをカスタマイズするだけです。利点は、他の場所のコードを変更する必要がないことです
http://ca3.php.net/manual/en/class.sessionhandler.php


もちろん、上記の方法の一部は実行することもできます

それはあなた自身の特定のニーズと既存の実装によって異なります

------解決策---------
話し合う
投稿者が同じアカウントに一度しかログインできないシステムについて質問している場合
これにも答えますか?

------解決策--------------------
ディスカッション

引用:

セッション ハンドラーをカスタマイズするだけで、他の場所のコードを変更する必要がないという利点があります
http://ca3.php.net/manual/en/class。 .sessionhandler.php


もちろん、上記のメソッドの一部は実行することもできます

それは、ユーザー固有のニーズと既存の実装によって異なります


見たことがあります このセッション ハンドラー、有効期限が切れたときに destroy callba をコールバックするかどうかはわかりません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。