Cet article vous explique principalement comment écrire un client PHP pour scanner le code QR pour se connecter à la fonction backend du PC. C'est aussi la première fois que j'écris cette fonction. Je me suis inspiré du blog du blogueur ci-dessous. pour faire une démonstration et compléter cette fonction. Je veux la résumer à nouveau au cas où vous l'oublieriez.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="static/h-ui/css/H-ui.min.css" /> <link rel="stylesheet" href="login/css/normalize.css"> <link rel="stylesheet" href="login/css/style.css"> </head> <body> <p class="top"> <img src="login/img/1.png" alt=""> </p> <p class="middle"> <p class="login_p"> <img src="login/img/3.png" alt="" class="change_login"> <img src="login/img/9.png" alt="" class="change_txt"> <p class="change_p"> <p class="con_top"> <img src="login/img/8.png" alt=""> <span>管理员登录</span> </p> <p class="con_bottom"> <p id="account"> <br> <img src="login/img/6.png" alt="" class="userimg"> <input type="text" id="username" placeholder="请输入用户名"> <br> <br> <br> <img src="login/img/7.png" alt="" class="passimg"> <input type="password" id="password" placeholder="请输入密码"> <br> <br> <br> <br> <p id="btnSubmit" class="btnSubmit">登录</p> <br> </p> <p id="code" style="display: none;"> <p class="code_p"> <img src="" alt="" id="qrcodeimg" width="144px" height="145px"> </p> <p class="code_txt"> <img src="login/img/18.png" alt=""> <p> <p> 打开APP</p> <p> 扫一扫登录</p> </p> </p> </p> <p class="hint"> <span>二维码有效期2分钟</span> </p> </p> </p> </p> </p> </body> <script src='login/js/jquery-1.9.0.min.js'></script> <script type="text/javascript" src="lib/layer/2.4/layer.js"></script> <script src='login/js/index.js'></script> <script src='static/h-ui.admin/js/login.js'></script> </html>
$.ajax({ type: "GET", url: "er/qrcodelogin/getqruuid.php", data: {}, success: function (result) { console.log(result); var data = JSON.parse(result); // console.log(data.code); if (data.code == 1) { $("#qrcodeimg").attr('src', 'http://qr.liantu.com/api.php?text=' + result); console.log(data.data); var min=0; interval1= setInterval(function () { min=min+1000; $.ajax({ type: "GET", url: "er/qrcodelogin/checkqruuid.php", data: {'qruuid': data.data}, success: function (result) { min=min+1000; if(min==36000){ console.log(min); alert("二维码已过期!"); clearInterval(interval1); location.replace(location.href); min=1000; interval1(); }else{ console.log(min); var data = JSON.parse(result); if (data.code == 1) { // alert('扫码成功(即登录成功),进行跳转.....'); //停止轮询 clearInterval(interval1); location.href="index.html"; //TODO 拿到需要的信息 然后跳转什么的 }else if(data.code == 300){ alert('无此后台用户!'); //停止轮询 clearInterval(interval1); location.href="login.html"; } } } }); }, 1000);//1秒钟 频率按需求 } } });
<?php/** * 用于前端获取qruuid(二维码唯一ID)使用 * * Created by PhpStorm. * User: caohan * Date: 2017/10/15 * Time: 下午2:59 */require('config.php');//生成随机的UUID 用于二维码显示的内容 和 绑定用$qruuid = substr(md5(uniqid(mt_rand(), true)), 0, 15);//生成uuid//将生成的随机数保存至数据库$sql="INSERT into t_pc_code(randnumber) values ('$qruuid')";$query = sqlsrv_query($conn, $sql);if (!$query) { die(print_r(sqlsrv_errors(), true)); }$arr = ['code'=>1, 'msg' => '生成qruuid成功','data'=>$qruuid];echo json_encode($arr);exit();
<?phpsession_start(); /** * Created by PhpStorm. * User: caohan * Date: 2017/10/15 * Time: 下午3:17 */require('config.php'); // $mysqli = new mysqli($db_host, $db_user, $db_pwd, $db_name); // if (mysqli_connect_error()) // echo mysqli_connect_error(); // $mysqli->set_charset("utf8");$qruuid = $_GET['qruuid'];$sql = "SELECT * from t_pc_code where randnumber='" . $qruuid . "'";$result = sqlsrv_fetch_array(sqlsrv_query($conn, $sql));if (!$result) { die(print_r(sqlsrv_errors(), true)); }if (!is_null($result['username'])){ $nowusername=$result['username']; $sql2="SELECT * from t_webuser where username = '$nowusername' and isDeleted=0"; $result2 = sqlsrv_query($conn, $sql2); if($row=sqlsrv_fetch_array($result2)){ $_SESSION['sydsdj_name']=$row['username']; $_SESSION['sydsdj_roleType']=$row['roleType']; $_SESSION['sydsdj_orgId']=$row['orgId']; $_SESSION['sydsdj_orgName']=$row['orgName']; $_SESSION['sydsdj_manage_id']=$row['id']; $arr = ['code' => 1, 'msg' => '登录成功', 'data' => $result]; }else{ $arr = ['code' => 300, 'msg' => '账号未注册!', 'data' => $result]; } }else{ $arr = ['code' => 500, 'msg' => 'qruuid暂时未被绑定','data'=>$qruuid]; }echo json_encode($arr);exit();?>
<?php// 指定允许其他域名访问 header('Access-Control-Allow-Origin:*');require('config.php'); $username = $_REQUEST['username'];$randnumber = $_REQUEST['randnumber']; $result = sqlsrv_query($conn,"UPDATE t_pc_code set username=' $username' where randnumber= '$randnumber'");if (!$result) { die(print_r(sqlsrv_errors(), true)); $arr = ['code' => 0, 'msg' => 'sy']; }else{ $arr = ['code' => 1, 'msg' => 'sy']; }echo json_encode($arr);?>
Recommandations associées :
Ouvrez le code d'implémentation de l'application en scannant le code QR
WeChat scanne le code QR pour se connecter au site code_Tutoriel 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!