この記事では主に、QR コードをスキャンして PC バックエンド関数にログインするための PHP クライアントを作成する方法について説明します。また、この関数を作成するのは、以下のブロガーのブログに触発されて初めて行いました。忘れた場合に備えて、このコードをもう一度まとめておきます。
<!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);?>
関連する推奨事項:
WeChat QR コードをスキャンして Web サイトにログインします code_PHP チュートリアル
php は、ブラウザの種類に応じて異なるダウンロード アドレスにアクセスするための QR コードのスキャンを実装します、php ブラウザ type_PHP チュートリアル
以上がPHP で QR コードをスキャンして PC バックエンド機能にログインするクライアントを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。