ホームページ  >  記事  >  バックエンド開発  >  1つのアカウントに1人だけがログインできるようにPHPで実装する方法

1つのアカウントに1人だけがログインできるようにPHPで実装する方法

藏色散人
藏色散人オリジナル
2021-03-12 10:55:032934ブラウズ

アカウントにログインできるのは 1 人だけであることを実現する

php メソッド: 1. セッション情報を redis に保存する; 2. session_id を mysql データベースに保存する; 3. ログイン時に、ユーザーを確認した後、名前とパスワード、データベースからユーザー情報を読み取り、ユーザーの session_id を取得し、セッションの有効期限が切れているかどうかを確認します; 4. 有効期限が切れていない場合は、openfire を使用してメッセージをプッシュします; 5. 新しい session_id をデータベースに更新します。

1つのアカウントに1人だけがログインできるようにPHPで実装する方法

#この記事の動作環境: Windows7 システム、PHP8 バージョン、DELL G3 コンピューター

php は、たった 1 人でできることを認識しています。同じアカウントを同時に使用する ログイン

この問題は以前にも検討し、今日実装しましたが、非常に高速で、研究から開発まで4時間近くかかります。これは QQ に似ています。2 台のコンピュータでログインすると、1 台のコンピュータがもう 1 台を締め出し、他の場所からのログイン情報の入力を求められます。

1. 実装原理

1. ユーザーはコンピューター A にログインし、セッション情報は redis に保存され、session_id は mysql データベースに保存されます。

2. 同じユーザーがコンピューター B にログインします。ユーザー名とパスワードを確認した後、データベースからユーザー情報を読み取り、コンピューター A にログインしているユーザーの session_id を取得し、 Redis でセッションが期限切れになりました。

3. 有効期限が切れた場合、openfire はプロンプト情報をプッシュする必要はありません。有効期限が切れていない場合は、PHP が openfire を使用してメッセージをプッシュした後、ユーザーがコンピューター A にログインしている Redis のセッションを削除します。削除後、コンピューター B にログインしているユーザーの個人情報をセッションに追加し、コンピュータ B でセッションにログインしているユーザーの個人情報を削除し、ユーザーがコンピュータ B にログインしているセッションを削除します。session_id がデータベースに更新されます。ここでは、最初にプッシュを送信する必要があり、その後セッションがクリアされます。それ以外の場合は、セッションがクリアされます。の場合、コンピュータ A のユーザーは、xmpp によって送信されたメッセージを受信しません。

注:

Openfire は Java cms の一種です。独自のデータベースがあります。作成するユーザー テーブルは、openfire に付属するユーザー テーブル (たとえば、情報のプッシュを容易にするため、携帯電話番号、電子メールなど)。

同じセッション ID が同じメディアにログインしている必要があります。現時点では、データベースを更新してメッセージをプッシュする必要はありません。

以下は、インストール プロセスの簡単な説明です。そして注意すべきこと。

2. 使用するツールをインストールします

# yum install php php-fpm nginx mysql mysql-server redis php-redis php-devel php-pdo php-mysql

セッション保存方法を変更します:

View copy and print?

# vim /etc/php-fpm.d/www.conf     
  
;php_value[session.save_handler] = files   //注释掉旧的  
;php_value[session.save_path] = /var/lib/php/session  
  
php_value[session.save_handler] = redis  //添加以下内容  
php_value[session.save_path] = "tcp://127.0.0.1:6379"

サービスの開始後、次のコンテンツでは、セッションが redis

1つのアカウントに1人だけがログインできるようにPHPで実装する方法#redis Telnet に正常に保存され、セッションが表示されることを説明しています

openfire ダウンロード アドレス: http://www.igniterealtime.org /downloads/

View copy and print?

# rpm -ivh ./*.rpm   //下载的是rpm安装包

openfire が開始されたら、http://ip:9090 にアクセスして、段階的に設定します。データベースのエンコーディング。

[推奨学習: 「

PHP ビデオ チュートリアル

」]

以上が1つのアカウントに1人だけがログインできるようにPHPで実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。