先说一下实现了什么效果,应用扫描php写的页面(也可以java网页,都一样的思路和步骤),扫描成功后跳转进入主页,光和你们这么说,肯定有人说了,没图说个jb,这就出来一个问题,很多人写博客,看这标题特别符合自己的问题,然后兴致勃勃的进来了,一看,我去……尼玛全是代码,也不知道是不是我的那种问题和想要的那种效果,心里没谱啊,好了,上图:
别纠结这页面咋这么丑,没写样式,说一下我实现的思路哈,首先在数据库中新建一个表用来存储扫码登录信息(id、用户名randomnum),这三个分别是id自增长,用户名,随机数,在点击生成二维码,生成随机数,可以用http://qr.topscan.com/api.php& # 63;文本=" +数据,可以使用这个生成二维码,当然你也可以自己写,这个操作就相当于某宝的那个二维码登录框,生成二维码之后,这个时候做了一个ajax请求操作,在刚才新建的那个表中插入数据,把生成的随机数保存到表中,这个时候用户为空,在打开应用程序进行扫码操作,应用扫描完成之后,进行网络请求,把你扫描到的二维码当成参数,做修改操作,修改用户为当前你的用户名——在网页使用每个几秒钟请求另外一个接口,根据随机数判断当前用户名是否为空,如果不为空(刚才扫码修改了用户名所以不为空)jquery操作做跳转操作,这个就是完整的流程。
说的简单的就是,生成二维码的时候只存入随机数(或者你自定义的随便信息),使应用程序用扫码之后根据随机数把用户名存进的去,网页每隔5 s请求另外一个接口时,如果用户名不为空好了跳转操作。大体就是这样的,有可能大神的实现也不是这样的,我就是把我理解的说出来,如果你们有另外的实现方法也可以在下边评论告诉我,共同学习、下面贴代码了。
部分php(新手可能不太规范,勿喷)登录。php代码:
else if ($ _REQUEST['行动']!=",,$ _REQUEST['行动']==codeCreate) {//用户名是否为空——→表示网页第一次点击新建生成//网页生成二维码操作,同时添加数据到表中 如果($ _REQUEST['用户名']!=){//不为空的时候表示修改 $ userName=$ _REQUEST['用户名'); 美元randomNum=$ _REQUEST [' randomNum ']; 回声“扫码成功”; $ sql=案耈serCodeLogin设置用户名=' $ username ' randomnum=randomnum美元”;//mysqli_query(康涅狄格州,sql美元);//插入成功 其他}{//为空的时候表示是新建二维码//生成随机数 美元randomNum=" "; ($ i=0;美元我& lt;5;$我+ +){ randomNum美元。=兰德(0,9); } echo $ randomNum;//显示生成的随机数 $ sql=安迦險serCodeLogin(用户名、randomnum)值(”、“randomnum美元”)”;//mysqli_query(康涅狄格州,sql美元);//插入成功 } mysqli_query(康涅狄格州,sql美元);//插入成功 }else if ($ _REQUEST['行动']!=",,$ _REQUEST['行动']==codeSelect){//根据随机数查询表中的用户名是否为空 美元randomNum=$ _REQUEST [' randomNum ']; 如果($ randomNum==",,空(randomNum美元)){ }else if ($ randomNum !=") { $ sql=把≡裼没覷serCodeLogin randomnum=randomnum美元”; 结果=美元mysqli_query(康涅狄格州,sql美元);//print_r(结果); 如果(mysqli_num_rows(结果)美元比;0){ 而($行=mysqli_fetch_assoc(结果)美元){ 用户名=美元行(“用户名”); } 如果($ userName==",,$ userName==null) {//说明客户端还未扫码修改过 }else if($用户名!="){//客户端扫码完成//跳转页面 回声“客户端扫码成功,跳转中……”; } } }
然后是登录。html
& lt; html> & lt; head> & lt; title>这是首页& lt;/title> & lt;/head> & lt;脚本type=" text/javascript " src=" https://www.yisu.com/zixun/js/jquery-1.12.3.js "祝辞& lt;/script> & lt; body> & lt;脚本type=" text/javascript祝辞 var类型=1; var randomNum; 函数clickBtn () { $ . post (“. ./login # 63;行动=codeCreate&用户名=", 函数(数据){ alert(" - - - - - -会:“+数据); randomNum=数据; $ (" # img”)。attr (“src”、“http://qr.topscan.com/api.php& # 63;文本=" +数据); }); 类型=2; } 函数的时间(){ $ . post (“. ./login # 63;行动=codeSelect& randomNum=" + randomNum, 函数(数据){ 如果(数据){ 警报(数据); 美元(位置)。attr (“href”、“index . html”); 其他}{ } }) } setInterval(“时间()",4000); & lt;/script> & lt;按钮类型=疤峤弧眎d=癰tn”比;点击生成二维码& lt;/button> & lt; !——src=" https://www.baidu.com/img/baidu_jgylogo3.gif "——比; & lt; img id=癷mg”宽度=?50 px”/比; & lt;/body> & lt;/html>android实现扫描网页二维码进行网页登录功能