Heim > Backend-Entwicklung > PHP-Problem > So implementieren Sie die Scan-Funktion in PHP

So implementieren Sie die Scan-Funktion in PHP

藏色散人
Freigeben: 2023-03-14 12:16:02
Original
3523 Leute haben es durchsucht

So implementieren Sie die Scan-Funktion in PHP: 1. Generieren Sie einen QR-Code, generieren Sie eine eindeutige ID-UUID und speichern Sie temporäre Informationen. 2. Halten Sie die Kommunikation zwischen Benutzeranfragen und Servern über eine lange Verbindung aufrecht Geben Sie den QR-Code mit Ihrem Mobiltelefon ein, um die eindeutige Kennung UUID zu erhalten und festzustellen, ob die Kennung gültig ist.

So implementieren Sie die Scan-Funktion in PHP

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.4, Dell G3-Computer.

Wie implementiert man die Scan-Funktion in PHP?

PHP-Scan-Code-Login

Scan-Code-Login-spezifische Implementierungsmethode

So implementieren Sie die Scan-Funktion in PHP

Scan-Code-Login-spezifischer Implementierungsprozess:

1. QR-Code generieren , Generieren Sie eine eindeutige Kennung UUID, die den gesamten Prozess durchläuft, und verwenden Sie Redis zum Speichern temporärer Informationen

(UUID wird als Schlüssel verwendet, der entsprechende Wert ist auf -1 gesetzt, -1 bedeutet nicht gescannt, die Gültigkeitsdauer von Die Kennung ist hier auf drei Minuten eingestellt und nach Ablauf wird ein QR-Code neu generiert.

    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;
    }
Nach dem Login kopieren
2. Die Anmeldeseite hält die Kommunikation zwischen der Benutzeranforderung und dem Server über eine lange Verbindung aufrecht und überwacht, ob sich der der UUID in Redis entsprechende Wert in regelmäßigen Abständen ändert

(-1 wird nicht gescannt, 0 bedeutet der Benutzer hat die beiden QR-Codes gescannt ps: Wenn Sie den QR-Code erneut scannen, ist die Eingabeaufforderung ungültig.

    /**
     * 验证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 直接登录。
        }
    }
Nach dem Login kopieren
3. Verwenden Sie Ihr Mobiltelefon, um den QR-Code zu scannen. Sie sollten hier Ihre eigene entwickelte App verwenden und sich bei der App anmelden), um die eindeutige Kennungs-UUID zu erhalten und festzustellen, ob die Kennung gültig ist (wenn die Kennung nicht ungültig ist, ändern Sie den der UUID entsprechenden Wert in 0, um dies anzuzeigen der QR-Code wurde gescannt).
        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('扫描成功,请确认登录');
    }
Nach dem Login kopieren
4. Die APP bestätigt die Anmeldung und ändert den Val-Wert, der der aktuellen UUID entspricht, in die Primärschlüssel-ID des aktuell angemeldeten Benutzers.
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('该用户不存在');
        }
    }
Nach dem Login kopieren
5 Wiederholen Sie den zweiten Schritt redis ist die UID des angemeldeten Benutzers, die Anmeldeinformationen werden zurückgegeben und der Anmeldestatus wird gespeichert.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Scan-Funktion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage