Comment implémenter la fonction scan en php

藏色散人
Libérer: 2023-03-14 12:16:02
original
3508 Les gens l'ont consulté

Comment implémenter la fonction scan en PHP : 1. Générez un code QR, générez un identifiant unique uuid et utilisez redis pour enregistrer les informations temporaires ; 2. Maintenez la communication entre les demandes des utilisateurs et les serveurs via une longue connexion ; le QR code avec votre téléphone mobile pour obtenir l'identifiant unique uuid, et déterminer si l'identifiant est valide.

Comment implémenter la fonction scan en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.4, ordinateur Dell G3.

Comment implémenter la fonction de numérisation en PHP ?

Connexion par code de numérisation PHP

Méthode d'implémentation spécifique de connexion par code de numérisation

Comment implémenter la fonction scan en php

Processus de mise en œuvre spécifique de connexion par code de numérisation :

1. , génère un identifiant unique uuid, qui parcourt tout le processus, et utilise redis pour enregistrer les informations temporaires

(uuid est utilisé comme clé, la valeur correspondante est définie sur -1, -1 signifie non analysé, la période de validité de l'identifiant est ici fixé à trois minutes, et l'expiration permettra de régénérer un code QR).

    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;
    }
Copier après la connexion
2. La page de connexion maintient la communication entre la demande de l'utilisateur et le serveur via une longue connexion, et surveille si la valeur correspondant à l'uuid dans redis change à intervalles réguliers

(-1 n'est pas analysé, 0 signifie l'utilisateur a scanné les deux codes QR ps : lorsque vous scannez à nouveau le code QR, l'invite n'est pas valide. Les valeurs restantes représentent l'identifiant de la clé primaire de l'utilisateur)

    /**
     * 验证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 直接登录。
        }
    }
Copier après la connexion
Utilisez votre téléphone mobile pour scanner le code QR (ps : vous devez utiliser votre propre application développée ici, et l'application a été connectée) pour obtenir l'identifiant unique uuid et déterminer si l'identifiant est valide (si l'identifiant n'est pas invalide, modifiez la valeur correspondant à l'uuid à 0 pour indiquer que le code QR a été scanné).
        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('扫描成功,请确认登录');
    }
Copier après la connexion
4. L'application confirme la connexion et modifie la valeur val correspondant à l'uuid actuel par l'identifiant de clé primaire de l'utilisateur actuellement connecté
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('该用户不存在');
        }
    }
Copier après la connexion
5. Répétez la deuxième étape si cette interface vérifie que la valeur de la clé est entrée. redis est l'UID de l'utilisateur connecté, les informations de connexion seront renvoyées et l'état de connexion sera enregistré.

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal