Android实现二维码登录的简单实现

来源:互联网 发布:郑州软件外包 编辑:程序博客网 时间:2024/04/28 02:56
在Android app的开发中,完成一个二维码登录的功能可以帮助我们的了解前后端与Android的简单交互过程,在此做一个简单的登录测试。涉及到简单的PHP的使用以及XAMPP的使用。
1.实现二维码登录的流程介绍
PC端打开登录界面显示二维码-->>
移动端对二维码进行扫描-->>
后台将用户username在数据库中进行轮询查找,查找到后跳转到成功登录界面。
2.本地服务器的搭建及数据库的建立
在此我们使用XAMPP在本地搭建一个服务器,XAMPP的使用方法比较简单,在此不多作介绍,需要的话百度之即可了解。
在XAMPP中建立数据库qrlogin,编码设置为utf-8 general-ci
新建数据表login_record
Id int 主键 自增
Randnumber VARCHAR 10 主键 (PRIMARY)
Usename TEXT 20
编码 utf-8 general-ci
3.使用PHP网页端生成简单二维码
推荐使用SublimeText编辑器简洁,方便~
二维码的生成使用联图网的api,百度可查到联图网网址
Android实现二维码登录的简单实现 - y514637059 - Binder

  • 新建index.php

<!DOCTYPE html>
<html>
<head>
<title>二维码登录</title>
</head>
<body>
<?php
$rannumber = "";
for ($i=0; $i < 8; $i++) {
$randnumber .= rand(0,9);
}
?>
<img src="http://qr.topscan.com/api.php?text=<?php echo $randnumber;?>" width="300px">
</body>
</html>

  • 新建创建数据库的php文件 mysql_connect.php

<?php

$con = mysql_connect("localhost","root","") or die (mysql_error());

$mysql_select_db("qrlogin");

?>

  • 在index.php中实现将randnumber插入到数据库中

<?php
require 'mysql_connect.php';

$rannumber = "";
for ($i=0; $i < 8; $i++) {
$randnumber .= rand(0,9);
}

mysql_query("insert into login_record (randnumber) values ('$randnumber')");
?>

  • 在index.php中继续添加轮询查找的代码
轮询查找通过javascript来实现,需要用到php代码块中生成的randnumber。所以需要在<body>标签中添加一个隐藏的标签来让javascript代码进行调用。
在<img/>标签后继续添加

<input hidden="hidden" type="text" id="randnumber" value="<?php echo $randnumber;?>"/>

在</body>标签后添加script代码

<script>

function polling(){

var xmlHttp;

if(window.XMLHttpRequest){

xmlHttp = new XMLHttpRequest;

}else{

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

}

xmlHttp.onreadystatechange = function(){

if(xmlHttp.status == 200 && xmlHttp.readyState == 4){

result = xmlHttp.responseText;

if(result == "true"){

window.location.href = "welcome.php";

}

}

}


randnumber = docment.getElementById("randnumber").value;

xmlHttp.open("GET","polling.php?randnumber="+randnumber,true);

xmlHttp.send();

}

setInterval("polling()",1000);

</script>

新建polling.php

<?php

require "mysql_connect.php"

$randnumber = $_GET['randnumber'];

$result = mysql_query("select * from login_record where randnumber = $randnumber");

$row = mysql_fetch_array($result);

if($row['username'] != "")echo "true";

else echo "false";

?>

新建welcome.php

<!DOCTYPE html>
<html>
<head>
<title>登录成功</title>
</head>
<body>
hello world!
</body>
</html>

刷新二维码界面,在数据库中为生成的数据添加username
保存后,二维码跳转到welcome.php
php自定义api接口
新建 saveUsername.php

<?php

$randnumber = $_GET['randnumber'];

$username = $_GET['username'];


require 'mysql_connect.php';

mysql_query("update login_record set username = '$username' where randnumbber = '$randnumber'");

?>

刷新二维码界面,在数据库中找到相印的二维码的randnumber
新建标签页,在地址栏中输入saveUsername.php的地址
127.0.0.1/saveUsername.php?randnumber=16341519&username=yxf
其中randnumber为刚才生成的数据的randnumber,若之前的二维码界面跳转到了welcome界面说明接口正确。

在Android中使用接口
这里使用一个zxing库,可以在github中找到https://github.com/zxing/zxing
zxing库中包含一个可以扫描二维码的库
导入库文件到eclipse中
Android实现二维码登录的简单实现 - y514637059 - Binder

新建一个自己的工程,引入库文件
添加一个button
Android实现二维码登录的简单实现 - y514637059 - Binder
 result即为二维码信息
添加一个EditText 设置ID = username
Android实现二维码登录的简单实现 - y514637059 - Binder
 
至此,二维码的登录的测试就完成啦~ 上述方法只是简单的一个参考
基于本次尝试,还可以对本次二维码登录的实现进行进一步的扩展补充。

0 0
原创粉丝点击