Android 에서 로그인을 하면 서버에서 PHP가 받아서 처리하는 로그인 예제이다.
결과를 json 으로 받아서 Android에서 저장해서 처리한다.
<?php // 파일을 직접 실행하는 비정상적 동작을 방지 하기 위한 목적 if(isset($_POST) && $_SERVER['REQUEST_METHOD'] == "POST"){ @extract($_POST); // $_POST['loginID'] 라고 쓰지 않고, $loginID 라고 써도 인식되게 함 if(isset($userID) && !empty($userID) && isset($password) && !empty($password)) { require_once 'phpclass/dbconnect.php'; require_once 'phpclass/loginClass.php'; $c = new LoginClass();
header("Cache-Control: no-cache, must-revalidate"); header("Content-type: application/json; charset=UTF-8");
$rs = $c->LoginUserChk($userID,$password,$uID); if($rs > 0){ $user = $c->getUser($userID, $password); if ($user != false) { $_SESSION['userID'] = $user['userID']; $_SESSION['userNM'] = $user['userNM']; $_SESSION['admin'] = $user['admin'];
$row = array("userNM"=>$user['userNM'],"mobileNO"=>$user['mobileNO'],"profileImg"=>$user['idx']);
$status = "success"; $message = ""; $userinfo = $row; } else { $status = "로그인 에러"; $message = "다시 한번 시도하시기 바랍니다."; $userinfo = null; }
} else if($rs === -1){ $status = "단말 불일치"; $message = '등록 단말 정보가 일치하지 않습니다. 관리자에게 문의하시기 바랍니다.'; $userinfo = null; } else { $status = "로그인 에러"; $message = '로그인 정보가 일치하지 않습니다'; $userinfo = null; } $result = array( 'status' => $status, 'message' => $message, 'userinfo' => $userinfo ); echo json_encode($result); } } else { // 비정상적인 접속인 경우 echo 0; // loginChk.php 파일을 직접 실행할 경우에는 화면에 0을 찍어준다. exit; } ?>
|
본 코드의 안드로이드 처리 부분 (Volley 라이브러리 활용)
https://github.com/jsk005/JavaProjects/blob/master/volleyloginsample/src/main/java/com/link2me/android/loginsample/LoginActivity.java 부분을 살펴보면 이해가 될 것이다.
Retrofit2 활용 예제는 GitHub에는 올리지 않았다.
@Parcelize data class LoginResult ( val status: String = "", val message: String = "", val userinfo: UserInfo? = null ): Parcelable
|
@Parcelize data class UserInfo ( val userNM: String = "", val mobileNO: String = "", val profileImg: String = "" ): Parcelable
|
void AutoLoginProgress() { userID = PrefsHelper.read("userid", ""); userPW = PrefsHelper.read("userpw", "");
if (userID != null && !userID.isEmpty() && userPW != null && !userPW.isEmpty()) { String uID = Utils.getDeviceId(mContext); // 스마트폰 고유장치번호 String mfoneNO = Utils.getPhoneNumber(mContext); // 스마트폰 전화번호 String AppVersion = String.valueOf(Utils.getVersionCode(mContext));
mloginService.Login(userID,userPW,uID,mfoneNO,AppVersion) .enqueue(new Callback<LoginResult>() { @Override public void onResponse(Call<LoginResult> call, retrofit2.Response<LoginResult> response) { LoginResult result = response.body(); if(result.getStatus().contains("success")){ PrefsHelper.write("userNM",result.getUserinfo().getUserNM()); PrefsHelper.write("mobileNO",result.getUserinfo().getMobileNO()); PrefsHelper.write("profileImg",result.getUserinfo().getProfileImg()); } else { if(result.getStatus().contains("로그인 에러")){ startActivity(new Intent(SplashActivity.this, LoginActivity.class)); finish(); } else { Utils.showAlert(mContext, result.getStatus(), result.getMessage()); } } }
@Override public void onFailure(Call<LoginResult> call, Throwable t) {
} }); } else { startActivity(new Intent(getApplication(), LoginActivity.class)); finish(); } }
|