使用了Github上具有扫码功能的ZXing开源库,使用了通过随机数生成二维码图片网络API,整个过程经过三步:
1.PHP网页生成二维码,相应随机数存储到数据库中;
2.Android客户端扫码,携带username保存至随机数对应的位置;
3.每隔一段时间,PHP通过Ajax轮询数据库,判断是否为空,不为空则跳转网页。
<html> <head> <title>qrlogin</title> <meta charset="UTF-8"/> </head> <body> <?php /** * @author Cenquanyu * @version 2016年5月12日 * */ require 'mysql_connect.php'; $randnumber = ""; for($i=0;$i<8;$i++){ $randnumber.=rand(0,9); } //将生成的随机数保存至数据库 mysql_query("insert into login_data (randnumber) values ('$randnumber')") ?> <img src="http://qr.liantu.com/api.php?text=<?php echo $randnumber;? alt="PHP 웹 페이지는 QR 코드를 생성하고 Android 클라이언트는 코드를 스캔하여 로그인합니다." >" width="300px"/> <input hidden="hidden" type="text" name="randnumber" id="randnumber"value="<?php echo $randnumber;?>"/> </body> <script> xmlHttpRequest.onreadystatechange = function(){ if(xmlHttpRequest.status == 200 && xmlHttpRequest.readyState ==4){ result = xmlHttp.responseText; if(result==true){//username不为空则跳转页面 window.location.href='welcome.php'; } } } } function polling(){ //执行轮询操作 var xmlHttpRequest; if(window.XMLHttpRequest){ xmlHttpRequest = new XMLHttpRequest(); } else{ xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } randnumber = document.getElementById('randnumber').value; xmlHttpRequest.open("GET","polling.php?randnumber="+ randnumber,true); xmlHttpRequest.send(); } setInterval("polling()",1000); </script> </html>