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.
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
Scan-Code-Login-spezifischer Implementierungsprozess:
(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; }
(-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 直接登录。 } }
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('扫描成功,请确认登录'); }
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('该用户不存在'); } }
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!