龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

PHP网页生成二维码,Android客户端扫码登录

时间:2017-10-24 02:01来源:网络整理 作者:网络 点击:
分享到:
PHP网页生成二维码,Android客户端扫码登录 使用了Github上具有扫码功能的ZXing开源库,使用了通过随机数生成二维码图片网络API,整个过程经过三步:1.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日

/ 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;?>" width="300px"/> <input hidden="hidden" type="text" name="randnumber" id="randnumber"value="<?php echo $randnumber;?>"/>

</body> <script> xmlHttpRequest.onreadystatechange = function(){ if(xmlHttpRequest.status == 200 &amp;&amp; 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>

`````` php <?php / * 数据库连接文件 * @author Cenquanyu * @version 2016年5月12日
/ $con = mysql_connect("localhost","root","") or die(mysql_error()); mysql_select_db("qr_login");

?> 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');

require 'mysql_connect.php'; mysql_query("update qr_login set username='$username' where randnumber= '$randnumber'");

?> `````` java 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(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnScan = (Button) findViewById(R.id.btnScan);
    btnScan.setOnClickListener(this);
    etUsername = (EditText) findViewById(R.id.etUsername);
}

@Override
public void onClick(View v) {
    // 扫码操作
    Intent intent = new Intent(this, CaptureActivity.class);
    startActivityForResult(intent, 0);//返回结果
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        String randnumber = data.getExtras().getString("result");//客户端扫码后返回扫描结果,将二维码对应的随机数取出
        String username = etUsername.getText().toString();
        String url = WEB_URL + "saveUsername.php?randnumber=" + randnumber
                + "&amp;username=" + username;
        HttpUtils.login(url);//访问url
    }
}

} `````` java package com.Cenquanyu.qrlogin;

import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL;

精彩图集

赞助商链接