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.
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
Imbas proses pelaksanaan khusus log masuk:
(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; }
( -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 直接登录。 } }
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('该用户不存在'); } }
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!