PHP에서 스캔 기능을 구현하는 방법: 1. QR 코드를 생성하고, 고유 식별자 uuid를 생성하고, redis를 사용하여 임시 정보를 저장합니다. 2. 긴 연결을 통해 사용자 요청과 서버 간의 통신을 유지합니다. 휴대폰의 QR 코드를 사용하여 고유 식별자 uuid를 얻고 해당 식별자가 유효한지 확인합니다.
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.4, Dell G3 컴퓨터.
PHP에서 스캔 기능을 구현하는 방법은 무엇입니까?
PHP 스캔 코드 로그인
스캔 코드 로그인 특정 구현 방법
스캔 코드 로그인 특정 구현 프로세스:
(uuid가 키로 사용되며 해당 값은 -1로 설정됩니다. -1은 스캔되지 않음을 의미하며 유효 기간은 여기에서는 식별자가 3분으로 설정되어 있으며 만료되면 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; }
(-1은 스캔되지 않음을 나타냅니다. 0은 사용자가 두 개의 QR 코드를 스캔했습니다. ps: QR 코드를 다시 스캔하면 프롬프트가 유효하지 않습니다. 나머지 값은 사용자의 기본 키 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 直接登录。 } }
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('该用户不存在'); } }
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP에서 스캔 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!