茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    php生成Android客戶端掃描可登錄的二維碼
    來源:易賢網(wǎng) 閱讀:1412 次 日期:2016-08-23 15:05:58
    溫馨提示:易賢網(wǎng)小編為您整理了“php生成Android客戶端掃描可登錄的二維碼”,方便廣大網(wǎng)友查閱!

    本文實(shí)例為大家分享了php網(wǎng)頁生成二維碼,Android客戶端掃描登錄的具體代碼,供大家參考,具體內(nèi)容如下

    使用了Github上具有掃碼功能的ZXing開源庫,使用了通過隨機(jī)數(shù)生成二維碼圖片網(wǎng)絡(luò)API,整個過程經(jīng)過三步:

    1.PHP網(wǎng)頁生成二維碼,相應(yīng)隨機(jī)數(shù)存儲到數(shù)據(jù)庫中;

    2.Android客戶端掃碼,攜帶username保存至隨機(jī)數(shù)對應(yīng)的位置;

    3.每隔一段時間,PHP通過Ajax輪詢數(shù)據(jù)庫,判斷是否為空,不為空則跳轉(zhuǎn)網(wǎng)頁。

    具體代碼:

    1. 通過隨機(jī)數(shù)生成二維碼圖片,并執(zhí)行輪詢操作命令的主頁面

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

        }

        //將生成的隨機(jī)數(shù)保存至數(shù)據(jù)庫

        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 && xmlHttpRequest.readyState ==4){

      result = xmlHttp.responseText;

      if(result==true){//username不為空則跳轉(zhuǎn)頁面

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

      }

    }

    }

     }

     function polling(){

       //執(zhí)行輪詢操作

       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>

    2. 數(shù)據(jù)庫連接頁面     

    <?php

    /**

     * 數(shù)據(jù)庫連接文件

     * @author Cenquanyu

     * @version 2016年5月12日

     * 

     */

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

    mysql_select_db("qr_login");

    ?>

    3.執(zhí)行輪詢操作的頁面,username不為空則跳轉(zhuǎn)     

    <?php

    /**

     * @author Cenquanyu

     * @version 2016年5月12日

     * 執(zhí)行輪詢操作,查詢隨機(jī)數(shù)在數(shù)據(jù)庫中的相應(yīng)位置的username字段為不為空

     * 為空,則返回false,頁面不跳轉(zhuǎn)

     * 不為空,則說明有用戶進(jìn)行了該二維碼的掃碼登錄,頁面進(jìn)行跳轉(zhuǎn)

     */

    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";

    ?>

    4.自定義的API,對客戶端的username進(jìn)行保存     

    <?php

    /**

     * @author Cenquanyu

     * @version 2016年5月12日

     * 自定義API用于Android客戶端掃碼登錄,將客戶端的username保存至二維碼對應(yīng)的隨機(jī)數(shù)在數(shù)據(jù)庫中的相應(yīng)位置。

     * 參數(shù):username,randnumber

     * 無返回值

     */

    $randnumber = $_GET('randnumber');

    $username = $_GET('username');

    require 'mysql_connect.php';

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

    ?>

    5. Android客戶端執(zhí)行掃碼操作的Activity     

    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端相應(yīng)地址

      @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);//返回結(jié)果

      }

      @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");//客戶端掃碼后返回掃描結(jié)果,將二維碼對應(yīng)的隨機(jī)數(shù)取出

          String username = etUsername.getText().toString();

          String url = WEB_URL + "saveUsername.php?randnumber=" + randnumber

              + "&username=" + username;

          HttpUtils.login(url);//訪問url

        }

      }

    }

    6. 網(wǎng)絡(luò)請求類

    package com.Cenquanyu.qrlogin;

    import java.io.IOException;

    import java.net.HttpURLConnection;

    import java.net.MalformedURLException;

    import java.net.URL;

    public class HttpUtils{

      public static void login(final String url){

        new Thread(new Runnable() {

          @Override

          public void run() {

            HttpURLConnection connection;

            try {

              connection = (HttpURLConnection) new URL(url).openConnection();

              connection.setRequestMethod("GET");

              connection.getInputStream();

            } catch (Exception e) {

              e.printStackTrace();

            }

          }

        }).start();

      }

    }

    以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:php生成Android客戶端掃描可登錄的二維碼
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)