php 안 드 로 이 드 클 라 이언 트 검색 로그 인 가능 한 QR 코드 생 성
Github 에서 스 캔 기능 을 가 진 ZXing 오픈 소스 라 이브 러 리 를 사 용 했 고 랜 덤 으로 QR 코드 이미지 네트워크 API 를 생 성 했 으 며 전체 과정 은 세 단 계 를 거 쳤 습 니 다.
1.PHP 웹 페이지 는 QR 코드 를 생 성하 고 해당 무 작위 수 는 데이터베이스 에 저장 합 니 다.
2.Android 클 라 이언 트 스 캔,username 을 가지 고 난수 에 대응 하 는 위치 에 저장 합 니 다.
3.일정 시간 마다 PHP 는 Ajax 폴 링 데이터 베 이 스 를 통 해 비어 있 는 지 여 부 를 판단 하고 비어 있 지 않 으 면 웹 페이지 를 건 너 뜁 니 다.
구체 적 인 코드:
1.랜 덤 으로 QR 코드 그림 을 만 들 고 폴 링 작업 명령 을 수행 하 는 홈 페이지
<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 && 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>
2.데이터베이스 연결 페이지
<?php
/**
*
* @author Cenquanyu
* @version 2016 5 12
*
*/
$con = mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("qr_login");
?>
3.폴 링 작업 을 수행 하 는 페이지,username 이 비어 있 지 않 으 면 이동
<?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";
?>
4.사용자 정의 API,클 라 이언 트 의 username 저장
<?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'");
?>
5.Android 클 라 이언 트 가 스 캔 작업 을 수행 하 는 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
@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
+ "&username=" + username;
HttpUtils.login(url);// url
}
}
}
6.네트워크 요청 클래스
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();
}
}
이상 은 본문의 전체 내용 이 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.