1.PHP网页生成二维码,先检查电脑中是否已经安装
package com.Cenquanyu.qrlogin; import com.Cenquanyu.qrlogin.R;import com.zxing.activity.CaptureActivity; import android.app.Activity;import android.content.Intent;import android.graphics.Paint.Cap;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;/** * @author Cenquanyu * @version 2016年5月12日 * */public class MainActivity extends Activity implements OnClickListener { private Button btnScan; private EditText etUsername; private static final String WEB_URL = "http://172.31.19.202/QRLogin/";//改成PC端相应地址 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate; setContentView(R.layout.activity_main); btnScan = findViewById; btnScan.setOnClickListener; etUsername = findViewById; } @Override public void onClick { // 扫码操作 Intent intent = new Intent(this, CaptureActivity.class); startActivityForResult;//返回结果 } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { String randnumber = data.getExtras;//客户端扫码后返回扫描结果,将二维码对应的随机数取出 String username = etUsername.getText; String url = WEB_URL + "saveUsername.php?randnumber=" + randnumber + "&username=" + username; HttpUtils.login;//访问url } } }
不过我们不可能总是这样来手动输入数据,所以需要自定义一个接口来自动向数据库输入用户名这里为了简便,都采用get的方式来提交数据saveUsername.php:
</html>
4.自定义的API,对客户端的username进行保存
即将“向数据库插入用户名”的操作简化为了访问链接(
*/ require 'mysql_connect.php'; $randnumber = ""; for($i=0;$i<8;$i++){ $randnumber.=rand(0,9); } //将生成的随机数保存至数据库 mysql_query("insert into login_data (randnumber) values ('$randnumber')")
?>
以上就是本文的全部内容,希望对大家的学习有所帮助。
- 建立一张数据表,包含三个字段,分别为主键id,用户名username,随机数randnumber
- 要生成一张包含有随机数的二维码图片,可以采用联图网(
- 客户端如果扫描了二维码图片,就向服务器端发送读取到的随机数以及用户名,通过随机数查找到指定字段,向该字段插入用户名
- 想要让第二步骤生成的二维码图片知道自己被扫描了然后自动跳转登录,需要第二步骤的生成的网页每隔一段时间就查询username字段是否为空,如果不为空,可知已经被扫描,,从而实现跳转登录
import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL;
本文实例为大家分享了php网页生成二维码,Android客户端扫描登录的具体代码,供大家参考,具体内容如下
为了简化步骤,这里选择集成软件包——XAMPPXAMPP是一个整合型的Apache套件,包含Apache、MySQL、PHP、PERL,可以一键式搭建起开发环境,推荐初学者使用。官方网址——
} setInterval("polling()",1000); </script>
6. 网络请求类
这里写图片描述
require 'mysql_connect.php'; mysql_query("update qr_login set username='$username' where randnumber= '$randnumber'");
1.PHP网页生成二维码,相应随机数存储到数据库中;2.Android客户端扫码,携带username保存至随机数对应的位置;3.每隔一段时间,PHP通过Ajax轮询数据库,判断是否为空,不为空则跳转网页。
数据库查询操作:polling.php文件
使用了Github上具有扫码功能的ZXing开源库,使用了通过随机数生成二维码图片网络API,整个过程经过三步: 1.PHP网页生成二维码,相应随机数存储到数据库中; 2.Android客户端扫码,携带username保存至随机数对应的位置; 3.每隔一段时间,PHP通过Ajax轮询数据库,判断是否为空,不为空则跳转网页。``` php <html> <head> <title>qrlogin</title> <meta charset="UTF-8"/> </head> <body> <?php / * @author Cenquanyu * @version 2016年5月12日
2. 数据库连接页面
<?php require 'mysql_connection.php'; $randnumber = $_GET['randnumber']; $result = mysql_query("select * from scancode where randnumber='$randnumber'"); $row = mysql_fetch_array; if ($row['username'] != "") { echo "true"; } else { echo "false"; }?>
?>
php <?php /** * @author Cenquanyu * @version 2016年5月12日 * 执行轮询操作,查询随机数在数据库中的相应位置的username字段为不为空 * 为空,则返回false,页面不跳转 * 不为空,则说明有用户进行了该二维码的扫码登录,页面进行跳转 */ require 'mysql_connect.php'; $randnumber = $_GET['randnumber']; $result = mysql_query("select * from login_data where randnumber='$randnumber'"); $row = mysql_fetch_array($result); if($row['username']!="") echo "true"; else echo "false"; ?>
php <?php /* @author Cenquanyu * @version 2016年5月12日 *
自定义API用于Android客户端扫码登录,将客户端的username保存至二维码对应的随机数在数据库中的相应位置。
* 参数:username,randnumber * 无返回值* / $randnumber =
$_GET('randnumber'); $username = $_GET('username');
具体代码:1. 通过随机数生成二维码图片,并执行轮询操作命令的主页面
这里采用php作为开发语言首先需要连接数据库:mysql_connection.php
</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(){
5. Android客户端执行扫码操作的Activity
首页index.php文件主要完成生成二维码图片的操作生成一个位数为五的随机数字,然后用联图网的API接口生成相应的二维码图片并显示,并将随机数插入到数据库当中
`````` php <?php / * 数据库连接文件 * @author Cenquanyu * @version 2016年5月12日 / $con = mysql_connect("localhost","root","") or die(mysql_error()); mysql_select_db("qr_login");
使用了Github上具有扫码功能的ZXing开源库,使用了通过随机数生成二维码图片网络API,整个过程经过三步:
如今通过扫描二维码然后跳转登录的情形已经很普遍了,这里就来模拟实现一个简单的跳转登录功能
import android.app.Activity; import android.content.Intent; import android.graphics.Paint.Cap; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; / * @author Cenquanyu * @version 2016年5月12日 / public class MainActivity extends Activity implements OnClickListener {
qrlogin xmlHttpRequest.onreadystatechange = function(){ if(xmlHttpRequest.status == 200 && xmlHttpRequest.readyState ==4){ result = xmlHttp.responseText; if{//username不为空则跳转页面 window.location.href='welcome.php'; }}} } function polling(){ //执行轮询操作 var xmlHttpRequest; if(window.XMLHttpRequest){ xmlHttpRequest = new XMLHttpRequest(); } else{ xmlHttpRequest = new ActiveXObject; } randnumber = document.getElementById.value; xmlHttpRequest.open("GET","polling.php&#63;randnumber="+ randnumber,true); xmlHttpRequest.send(); } setInterval;
建立数据库scan_code,再新建数据表scancode,包含三个字段,id和randnumber作为联合主键
?> `````` java package com.Cenquanyu.qrlogin;
版权声明:本文由美高梅开户送58元官网发布于美高梅开户送58元官网,转载请注明出处:1.PHP网页生成二维码,先检查电脑中是否已经安装