Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk melaksanakan fungsi imbasan dalam php

Bagaimana untuk melaksanakan fungsi imbasan dalam php

藏色散人
Lepaskan: 2023-03-14 12:16:02
asal
3523 orang telah melayarinya

Cara melaksanakan fungsi imbasan dalam PHP: 1. Hasilkan kod QR, jana pengecam unik uuid, dan gunakan redis untuk menyimpan maklumat sementara 2. Kekalkan komunikasi antara permintaan pengguna dan pelayan melalui sambungan yang panjang ; 3. Gunakan telefon mudah alih anda untuk mengimbas kod QR untuk mendapatkan pengecam unik uuid, dan tentukan sama ada pengecam itu sah.

Bagaimana untuk melaksanakan fungsi imbasan dalam php

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.4, komputer Dell G3.

Bagaimana untuk melaksanakan fungsi imbasan dalam PHP?

Log masuk kod imbasan PHP

Kaedah pelaksanaan khusus log masuk kod imbasan

Bagaimana untuk melaksanakan fungsi imbasan dalam php

Imbas proses pelaksanaan khusus log masuk:

1 Jana kod QR dan jana pengecam unik uuid, yang berjalan melalui keseluruhan proses , gunakan redis untuk menyimpan maklumat sementara

(uuid digunakan sebagai kunci, nilai yang sepadan ditetapkan kepada -1, -1 bermakna tidak diimbas, tempoh sah pengenalan ditetapkan kepada tiga minit di sini, dan kod QR akan dijana semula selepas tamat tempoh).

    public function index(){
        $uuid = self::createRandomStr('6');
        $url = $this->code($uuid); //二维码链接地址
        Redis::sAdd($uuid,'-1');
        Redis::command('Expire',[$uuid,180]);//设置过期时间
        return view('home.send.index',['url'=>$url,'uuid'=>$uuid]);
    }

    /**
     * 生成二维码url
     * @param $text
     */
    public function code($uuid){
        $host='http://'.$_SERVER["HTTP_HOST"].'/api/send';
        $url='http://qr.liantu.com/api.php?text='.$host.'?uuid='.$uuid;
        return $url;
    }
Salin selepas log masuk
2. Halaman log masuk mengekalkan komunikasi antara permintaan pengguna dan pelayan melalui sambungan yang panjang, dan memantau sama ada nilai yang sepadan dengan uuid dalam redis berubah pada selang masa yang tetap

( -1 Tidak diimbas, 0 bermakna pengguna telah mengimbas kod QR ps: Apabila mengimbas kod QR sekali lagi, gesaan telah tamat tempoh, dan nilai selebihnya mewakili id ​​kunci utama pengguna)

    /**
     * 验证uuid是否过期
     * @param Request $req
     * @return string|void
     */
    public function confirm(Request $req){
        $uuid = $req->uuid;

        $result = implode('',Redis::sort($uuid));
        if($result == ''){//当uuid不存在时表示该标识已失效,重新生成二维码
            return '该链接地址已过期';
        }
        if($result == '-1'){
            return '';
        }elseif($result == '0'){
            return '用户已扫描';
        }else{
            return '用户已确认登录';//获取用户的user_id 直接登录。
        }
    }
Salin selepas log masuk
3. Gunakan telefon bimbit anda untuk mengimbas kod QR (ps: anda harus menggunakan Apl anda sendiri yang dibangunkan di sini, dan Apl telah dilog masuk) untuk mendapatkan pengecam unik uuid, dan tentukan sama ada pengecam itu sah (jika pengecam tidak sah, ubah suai nilai yang sepadan dengan uuid kepada 0 untuk mewakili kod dua dimensi telah diimbas).
        public function index(Request $req){
              $uuid = $req->uuid;
              $info = Code::getOne(['uuid'=>$uuid]);
              $result = implode('',Redis::sort($uuid));
              if(!$result){
                   return $this->ajaxMsgError('该二维码已失效');
              }
             Redis::sRem($code,'-1');
             Redis::sadd($code ,0);
             return $this->ajaxMsgOk('扫描成功,请确认登录');
    }
Salin selepas log masuk
4 APP mengesahkan log masuk, dan menukar nilai val yang sepadan dengan uuid semasa kepada id kunci utama pengguna yang sedang log masuk
public function dologin(Request $req){
        $user_id = $req->user_id;
        $uuid= $req->uuid;

        $user = User::getOne(['id'=>$user_id]);
        if($user){
            if($user->status != 1){
                return $this->ajaxMsgError('该用户已被禁用');
            }
            Redis::sadd($uuid,$user_id);
            return $this->ajaxSuccess('登录成功');
        }else{
            //用户不存在
            return $this->ajaxError('该用户不存在');
        }
    }
Salin selepas log masuk
5 langkah kedua, jika antara muka ini menyemak Apabila nilai kunci dalam redis ialah UID orang yang log masuk, maklumat orang yang log masuk akan dikembalikan dan status log masuk akan disimpan.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi imbasan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan