안 드 로 이 드 는 웹 페이지 QR 코드 를 스 캔 하여 웹 페이지 로그 인 기능 을 실현 합 니 다.

먼저 어떤 효 과 를 실 현 했 는 지 말씀 드 리 겠 습 니 다.app 은 phop 이 쓴 페이지(자바 페이지 도 가능 합 니 다.똑 같은 사고 와 절차)를 스 캔 한 후에 홈 페이지 로 뛰 어 들 었 습 니 다.여러분 에 게 만 이렇게 말 했 을 것 입 니 다.jb 를 말 하려 고 하지 않 았 습 니 다.그러면 문제 가 생 겼 습 니 다.많은 사람들 이 블 로 그 를 썼 습 니 다.이 제목 이 자신의 문제 에 특히 부합 되 는 것 을 보고 흥 겹 게 들 어 왔 습 니 다.한 번 보 세 요.내 가 갈 게..니 마 는 다 코드 야.내 문제 와 원 하 는 효과 인지 모 르 겠 어.마음 이 안 맞 아.자,위의 그림:

이 페이지 가 왜 이렇게 못 생 겼 는 지 고민 하지 마 세 요.스타일 을 쓰 지 않 았 습 니 다.제 가 실현 한 방향 을 말씀 드 리 겠 습 니 다.먼저 데이터베이스 에 스 캔 로그 인 정보(id,username,random num)를 저장 하 는 시 계 를 새로 만 들 었 습 니 다.이 세 가 지 는 각각 id 자체 성장,사용자 이름,랜 덤 수―>클릭 하여 QR 코드 를 만 들 고 랜 덤 수 를 만 들 수 있 습 니 다http://qr.topscan.com/api.php?text="+data,이 걸 로 QR 코드 를 만 들 수 있 습 니 다.물론 당신 도 스스로 쓸 수 있 습 니 다.이 조작 은 특정한 보물 의 QR 코드 로그 인 상자 에 해당 합 니 다.QR 코드 를 생 성 한 후에 이때 ajax 요청 작업 을 했 습 니 다.방금 새로 만 든 표 에 데 이 터 를 삽입 하여 생 성 된 무 작위 수 를 표 에 저장 합 니 다.이때 username 은 비어 있 습 니 다.>app 을 열 어 스 캔 작업 을 했 습 니 다.app 스 캔 이 끝 난 후에 네트워크 요청 을 합 니 다.스 캔 한 QR 코드 를 매개 변수 로 하고 수정 작업 을 하 며 username 을 현재 사용자 이름 으로 변경 합 니 다.>웹 페이지 는 몇 초 마다 다른 인 터 페 이 스 를 요청 합 니 다.무 작위 수 에 따라 현재 username 이 비어 있 는 지 여 부 를 판단 합 니 다.비어 있 지 않 으 면 jquery 작업 을 수행 합 니 다.이것 이 완전한 절차 입 니 다.
간단하게 말 하면 QR 코드 를 생 성 할 때 난수(또는 사용자 가 정의 한 임의의 정보)만 저장 하고 app 스 캔 을 사용 한 후 난수 에 따라 사용자 이름 을 저장 합 니 다.웹 페이지 는 5s 마다 다른 인 터 페 이 스 를 요청 할 때 username 이 비어 있 지 않 으 면 점프 동작 을 합 니 다.대체로 이 렇 습 니 다.대 신의 실현 도 이 렇 지 않 을 수도 있 습 니 다.저 는 제 가 이해 하 는 것 을 말 하 겠 습 니 다.만약 에 다른 실현 방법 이 있다 면 아래 에서 저 에 게 알려 주 십시오.같이 공부 하고 아래 에 코드 를 붙 일 수 있 습 니 다.
일부 phop(초보 자 는 규범 에 맞지 않 을 수 있 습 니 다.뿌리 지 마 십시오)login.phop 코드:

else if ($_REQUEST['act'] != '' && $_REQUEST['act'] == 'codeCreate') {
  //if userName  --->             
  //         ,         
  if ($_REQUEST['userName'] != '') {//          
    $userName = $_REQUEST['userName'];
    $randomNum = $_REQUEST['randomNum'];
    echo "    ";
    $sql = "update UserCodeLogin set username='$userName' WHERE randomnum='$randomNum'";
//    mysqli_query($conn, $sql);//    
  } else {//             
    //     
    $randomNum = "";
    for ($i = 0; $i < 5; $i++) {
      $randomNum .= rand(0, 9);
    }
    echo $randomNum;//        
    $sql = "insert into UserCodeLogin(username,randomnum) VALUES ('','$randomNum')";
//    mysqli_query($conn, $sql);//    
  }
  mysqli_query($conn, $sql);//    

} else if ($_REQUEST['act'] != '' && $_REQUEST['act'] == 'codeSelect') {//          username    
  $randomNum = $_REQUEST['randomNum'];
  if ($randomNum == '' && empty($randomNum)) {
  } else if ($randomNum != '') {
    $sql = "select username from UserCodeLogin where randomnum='$randomNum'";
    $result = mysqli_query($conn, $sql);
//    print_r($result);
    if (mysqli_num_rows($result) > 0) {
      while ($row = mysqli_fetch_assoc($result)) {
        $userName = $row['username'];
      }
      if ($userName == '' && $userName == null) {
        //            
      } else if ($userName != '') {
        //       
        //    
        echo "       ,   ...";
      }
    }
  }
그리고 login.html.

<html>
<head>
  <title>    </title>
</head>
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>
<body>
<script type="text/javascript">
  var type = 1;
  var randomNum;

  function clickBtn() {
    $.post("../login.php?act=codeCreate&userName=",
      function (data) {
        alert("-------random:" + data);
        randomNum = data;
        $("#img").attr('src', "http://qr.topscan.com/api.php?text=" + data);
      });
    type = 2;
  }
  function time() {
    $.post("../login.php?act=codeSelect&randomNum=" + randomNum,
      function (data) {
        if (data) {
          alert(data);
          $(location).attr('href', 'index.html');
        } else {
        }
      })
  }
  setInterval("time()", 4000);
</script>
<button type="submit" id="btn" onclick="clickBtn()">        </button>
<!--src="https://www.baidu.com/img/baidu_jgylogo3.gif"-->
<img id="img" style="visibility: visible" width="250px"/>
</body>
</html> 
위 에는 서버 의 일부 코드 입 니 다.소스 코드 가 있 으 니 안심 하 세 요.아래 에 쓰 고 같이 드 리 겠 습 니 다.
다음은 안 드 로 이 드 의 스 캔 코드 에 관 한 제3자 오픈 소스 가 매우 많 습 니 다.여 기 는 Zing 을 사용 합 니 다.그 는 매우 많은 QR 코드,바코드 를 실현 하여 QR 코드 를 생 성 할 수 있 습 니 다.
라 이브 러 리 를 만 들 고 jar 가방 을 사용 하면 이 라 이브 러 리 를 직접 가 져 가서 필요 한 스타일 을 고 칠 수 있 습 니 다.
이 그림 은 디 렉 터 리 구조 입 니 다.

주요 한 것 은 main Activity.java 의 호출 입 니 다.
스 캔 성공 후 리 턴:

@Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //      /    
    if (requestCode == REQUEST_CODE_SCAN && resultCode == RESULT_OK) {
      if (data != null) {
        String content = data.getStringExtra(Constant.CODED_CONTENT);
        result.setText("     :" + content);
        /*      */
        String username = "dingchao";
        volleyScanCodeLogin(content, username);
        Log.e("aaa","volleyScanCodeLogin。。。3");
      }
    }
  }
volley ScanCodeLogin()방법:

/**
   *     
   *   Volley      
   *
   * @param content           
   * @param username    
   */
  private void volleyScanCodeLogin(final String content, final String username) {
    Log.e("aaa","volleyScanCodeLogin。。。1");
    final RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this);
    StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://        /webcodelogin/login.php", new Response.Listener<String>() {
      @Override
      public void onResponse(String s) {
        Log.e("aaa","volleyScanCodeLogin。。。2");
        Toast.makeText(MainActivity.this, "" + s, Toast.LENGTH_SHORT).show();
      }
    }, new Response.ErrorListener() {
      @Override
      public void onErrorResponse(VolleyError volleyError) {

      }
    }) {
      @Override
      protected Map<String, String> getParams() throws AuthFailureError {
        Map<String, String> map = new HashMap<String, String>();
        map.put("act", "codeCreate");
        map.put("userName", username);
        map.put("randomNum", content);
        return map;
      }
    };
    mQueue.add(stringRequest);/*    */
  }
위 에 있 는 것들 이 바로 주요 프로젝트 코드 입 니 다.그리고 소스 코드 는 바 이 두 클 라 우 드 디스크 에 포장 해서 넣 겠 습 니 다.링크:https://pan.baidu.com/s/1slsQM2D비밀번호:gdyp

좋은 웹페이지 즐겨찾기