한 사람만 계정에 로그인할 수 있다는 것을 인식하는 PHP 방법: 1. redis에 세션 정보를 저장합니다. 2. mysql 데이터베이스에 session_id를 저장합니다. 3. 로그인할 때 사용자 이름과 비밀번호를 확인한 후, 사용자 정보는 데이터베이스 읽기에서 저장되고, 사용자의 session_id를 얻은 후 세션이 만료되었는지 확인합니다. 4. 만료되지 않은 경우 openfire를 사용하여 메시지를 푸시합니다. 5. 새 session_id를 데이터베이스에 업데이트합니다.
이 기사의 운영 환경: windows7 시스템, PHP8 버전, DELL G3 컴퓨터
php는 동시에 한 사람만 동일한 계정에 로그인할 수 있다는 것을 인식합니다
이 문제를 고려했습니다. 예전에 구현했는데 지금 구현해보니 꽤 빠르네요. 연구부터 개발까지 거의 4시간 정도 걸립니다. 두 대의 컴퓨터로 로그인하면 한 대가 다른 컴퓨터를 밀어내고 다른 위치에서 로그인 정보를 묻는 메시지를 표시하는 것과 비슷합니다.
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이며 자체 데이터베이스를 가지고 있습니다. 생성한 사용자 테이블은 함께 제공되는 사용자 테이블 간에 일종의 연결(예: 휴대폰 번호, 이메일 주소 등)을 설정해야 합니다. 정보 푸시를 용이하게 하는 개방형 .
동일한 session_id가 동일한 매체에 로그인되어 있어야 합니다. 이때 데이터베이스 업데이트 및 푸시 메시지는 필요하지 않습니다.
다음은 설치 과정과 주의할 점에 대한 간략한 소개입니다.
둘째, 사용한 도구 설치
# yum install php php-fpm nginx mysql mysql-server redis php-redis php-devel php-pdo php-mysql
세션 저장 방법 수정:
복사하여 인쇄하시겠습니까?
# 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에 성공적으로 저장되었다고 표시되면
세션을 보려면 redis telnet
openfire 다운로드 주소: http://www.igniterealtime.org/downloads/
복사 및 인쇄를 확인하시겠습니까?
# rpm -ivh ./*.rpm //下载的是rpm安装包
openfire가 시작된 후 http://ip:9090을 방문하여 구성하세요. 단계별로 해야 할 일이 하나 있습니다. 데이터베이스의 인코딩이라는 점에 유의하세요.
【추천 학습: "PHP 비디오 튜토리얼"】
위 내용은 한 사람만 계정에 로그인할 수 있도록 PHP로 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!