Rumah pembangunan bahagian belakang masalah PHP Bagaimana untuk log masuk hanya satu pengguna dalam php

Bagaimana untuk log masuk hanya satu pengguna dalam php

Dec 19, 2022 am 10:43 AM
php

Cara untuk log masuk hanya satu pengguna dalam PHP: 1. Mulakan soket di hujung hadapan uni-app 2. Terima mesej jenis "force exit" dalam masa nyata 3. Gunakan bahagian belakang PHP untuk terima parameter "Unik peranti" "Pengenalan" 4. Hantar mesej mengikut id pelanggan dalam cache.

Bagaimana untuk log masuk hanya satu pengguna dalam php

Persekitaran pengendalian tutorial ini: sistem Windows 10, PHP versi 8.1, komputer Dell G3.

Bagaimana untuk log masuk hanya satu pengguna dalam php?

uni-app menggabungkan PHP untuk mencapai log masuk pengguna tunggal

Log masuk pengguna tunggal, iaitu, dalam aplikasi, pengguna yang sama hanya boleh log masuk sekali dalam talian Jika pengguna log masuk, dia akan ditolak ke luar talian serta-merta pada peranti lain Selepas pengesahan, kosongkan pemuatan log masuk pada peranti dan kembali ke antara muka log masuk.

uni-app pada masa ini boleh membungkus Android, IOS, applet WeChat, applet Toutiao Alipay dan H5 dengan menggunakan rangka kerja vue.js dan hanya perlu menulis satu set kod Ia mudah untuk nyahpepijat dan awan pembungkusan dengan menggunakan alat HBuilder , Mengenai sijil Apple, kami mengesyorkan CW.PUB, https://cw.pub/index/document/index. Gunakan HBuilder untuk mencipta pakej jailbreak dan tandatangani pada tapak web tersebut untuk memasangnya pada telefon Apple biasa Walau bagaimanapun, terdapat kaedah lain di Internet yang tidak disenaraikan di sini.

Secara amnya, APP akan menggunakan platform tolak mesej pihak ketiga untuk log masuk pengguna tunggal, walaupun uni-app juga boleh menyambung ke platform tolak seperti Umeng dan Jiguang. Tetapi masih disebabkan oleh masa, semakan platform dok dan proses lain tidak membenarkan masa. Saya menggunakan gatewayworkman dan websocket untuk melakukan sembang segera sebelum ini, jadi log masuk pengguna tunggal juga dilaksanakan menggunakan websocket.

Contoh log masuk pengguna tunggal soket Uni-apl

1 Bahagian hadapan uni-apl menghantar pengecam unik peranti semasa apabila memulakan soket, dan kemudian menerima "keluar paksa" dalam masa nyata " jenis mesej hanyalah contoh mudah.

//初始化
socket.on('init', () => { //连接初始化
socket.send({
type: 'login',
token: uni.getStorageSync('access_token'),
device_no: plus.device.uuid,//手机设备唯一编号
});
}).on('quit_push',(res)=> {
if(res) {
uni.showModal({
title: '退出通知',
content: '你的账号在其他设备上登录!',
showCancel: true,
cancelText: '取消',
confirmText: '确定',
success: res => {
if(res.confirm) {
uni.clearStorageSync()
store.commit('chat/clear')
uni.reLaunch({
url:"../../pages/login/index"
})
}else if(res.cancel) {
uni.clearStorageSync()
store.commit('chat/clear')
uni.reLaunch({
url:"../../pages/login/index"
})
}
}
});
}
});
Salin selepas log masuk

2 Bahagian belakang menerima parameter "pengecam unik peranti" dan mula-mula menyemak sama ada cache wujud Tiada id pelanggan yang merekodkan pengecam dan soket peranti.

3. Antara muka log masuk menerima pengenalan peranti dan rekod pengenalan diambil daripada cache atau pustaka untuk menentukan sama ada ia konsisten dengan pengenalan peranti yang diterima sekarang , mesej dihantar berdasarkan klien dalam cache.

$is_online = Db::name('UserLoginClient')->where('user_id',$user['id'])->order('id desc')->find();
if(isset($device_no) && $device_no && $is_online['device_no'] != $device_no && !empty($is_online['device_no'])) { 
Tools::sendToClient($is_online['client_id'],json_encode([
'type' => 'quit_push',
'data' => 'ip',
'message' => '强制下线'
]));
}
Salin selepas log masuk

4. Bahagian kaedah sendToClient kelas alatan

public static function sendToClient($client_id, $message)
    {
        Gateway::sendToClient($client_id, $message);
    }
Salin selepas log masuk

Tekan contoh log masuk pengguna tunggal

1. Mula-mula, kami berhubung dengan Umeng, termasuk menambahkan SDK pada bahagian hadapan dan belakang serta menggunakan kaedah mereka.

2. Message push mempunyai nilai unik "token", di sini dirujuk sebagai "pushtoken", yang dijana oleh pelanggan dan boleh mengenal pasti peranti unik.

3. Apabila bahagian belakang log masuk, ia menerima pushtoken dan juga menentukan sama ada pushtoken wujud Jika ia tidak wujud, ia akan disimpan dengan ID pengguna sebagai kunci.

4. Apabila ia wujud, ia akan dinilai sama ada ia konsisten dengan cache Jika ia konsisten, masa cache akan dilanjutkan ditolak ke pushtoken lama (dalam cache) dan pushtoken baharu akan dicache.

if (self::$headToken && Cache::has(self::$prefix . self::$userId)) {
            if (self::$headToken == Cache::get(self::$prefix . self::$userId)) {
                Cache::set(self::$prefix . self::$userId, self::$headToken, self::$timeOut);
            } else {        // 换了手机,客户端重新发送pushtoken到服务端,服务端与缓存中的pushtoken比较,不同则给原来pushtoken手机推送一条并重新缓存新的token
                // modify by wensen on 20180816
                // $addr = getCity();
                $addr = getMobCity();
                $ip = request()->ip();
                
                if ($addr) {
                    $addr['province'] = empty($addr['province']) ? '' : $addr['province'];
                    $addr['city'] = empty($addr['city']) ? '' : $addr['city'];
                    // $address = "\t" . $addr['country'] . "-" . $addr['region'] . "-" . $addr['city'] . " (IP:" . $ip . ")\t";
                    $address = "\t" . $addr['country'] . "-" . $addr['province'] . "-" . $addr['city'] . " (IP:" . $ip . ")\t";
                } else {
                    $address = "IP:" . $ip . "";
                }
                $OldToken = Cache::get(self::$prefix . self::$userId);
                if (strlen($OldToken) == 64) {
                    $content = array(
                        'title' => 'APP紧急通知',
                        'body' => '您的账号于:' . date('Y-m-d H:i:s') . '在' . $address . '处登录,若不为您本人登录,请您立即修改密码!',
                        'pull_service' => 'login'
                    );
                    \umeng\Push::send($OldToken, 'unicast', $content, 'message', true);
                } elseif (strlen($OldToken) == 44) {
                    $content = array(
                        'pull_service' => 'login',
                        'msg' => '您的账号于:' . date('Y-m-d H:i:s') . '在' . $address . '处登录,若不为您本人登录,请您立即修改密码!'
                    );
                    \umeng\Push::send($OldToken, 'unicast', $content, 'message', true);
                }
                Cache::set(self::$prefix . self::$userId, self::$headToken, self::$timeOut);
            }
        } else {
            Cache::set(self::$prefix . self::$userId, self::$headToken, self::$timeOut);
        }
Salin selepas log masuk

5 Klien APP menerima tolakan dan melakukan gesaan pop timbul dan pemprosesan keluar.

6 Di atas adalah kaedah tolak yang dirangkumkan mengikut SDK Umeng, termasuk aktiviti aplikasi unicast, penyiaran, melompat, sambungan halaman web melompat, dll.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk log masuk hanya satu pengguna dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Pembalakan CakePHP Pembalakan CakePHP Sep 10, 2024 pm 05:26 PM

Log masuk CakePHP adalah tugas yang sangat mudah. Anda hanya perlu menggunakan satu fungsi. Anda boleh log ralat, pengecualian, aktiviti pengguna, tindakan yang diambil oleh pengguna, untuk sebarang proses latar belakang seperti cronjob. Mengelog data dalam CakePHP adalah mudah. Fungsi log() disediakan

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

See all articles