日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
php怎么實現(xiàn)掃一掃功能

本文操作環(huán)境:Windows7系統(tǒng),php7.4版,Dell G3電腦。

創(chuàng)新互聯(lián)建站云計算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過13年的服務(wù)器租用、成都西云數(shù)據(jù)中心、云服務(wù)器、網(wǎng)頁空間、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗,已先后獲得國家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機、網(wǎng)頁空間、國際域名空間、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。

php怎么實現(xiàn)掃一掃功能?

PHP掃碼登錄

掃碼登錄具體實現(xiàn)方式

掃碼登錄具體實現(xiàn)流程:

1、生成二維碼,生成一個唯一標識uuid,該標識貫穿整個流程,使用redis保存臨時信息

(uuid作為key,對應(yīng)值設(shè)置為-1,-1表示未掃描,該標識的有效期這里設(shè)置為三分鐘,過期會重新生成一個二維碼)。

    public function index(){
        $uuid = self::createRandomStr('6');
        $url = $this->code($uuid); //二維碼鏈接地址
        Redis::sAdd($uuid,'-1');
        Redis::command('Expire',[$uuid,180]);//設(shè)置過期時間
        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;
    }
2、登錄頁面通過一個長連接維持用戶請求和服務(wù)器之間的通信,每隔一段時間監(jiān)測redis中 uuid對應(yīng)的值是否發(fā)生改變

(-1未掃描 , 0表示用戶已掃描該二維碼 ps:再次掃描該二維碼時提示已失效, 其余的值表示用戶的主鍵id)

    /**
     * 驗證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 直接登錄。
        }
    }
3、使用手機掃描二維碼(ps:此處應(yīng)該使用自己開發(fā)的App,并且App已經(jīng)登錄)獲取唯一標識uuid,判斷該標識是否有效 (該標識未失效的情況下修改uuid對應(yīng)的值為0,用來表示該二維碼已被掃描)。
        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('掃描成功,請確認登錄');
    }
4、APP確認登錄,把當前uuid對應(yīng)的val值修改為當前登錄用戶的主鍵id
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('該用戶不存在');
        }
    }
5、重復(fù)第二步,此接口如果檢查到redis中的key值為登錄人UID的時候,就會返回登錄人信息并且保存登錄態(tài)。

文章題目:php怎么實現(xiàn)掃一掃功能
本文鏈接:http://www.dlmjj.cn/article/djdcedg.html