2022 - 2023년도에 사용하던 블로그 내용을 이전해 온 기록입니다.
해당 블로그는 링크로 첨부하였으며
글 내용은 동일합니다.
무료 호스팅이 가능한 닷홈 서버를 이용하여 안드로이드 스튜디오에서 로그인과 회원가입을 구현해보았다.
안드로이드 스튜디오, php, MySQL이 이용되었다.
닷홈 서버는 이전에 만들어둔 적이 있었기에 그대로 사용해주었다.
만약 닷홈 서버가 없다면 사이트에 들어가서 무료로 간단하게 신청하고 오면 된다. 전혀 어렵지 않다.
(무료 호스팅은 3개월 정도에 한번씩 연장을 해주어야 계속 무료로 사용 가능한 것으로 알고있다.)
존재하는 닷홈 서버 주소에 + "/myadmin" 붙여서 접속한 phpmyadmin에서 간단하게 DB를 활용할 수 있다.
나는 이전에 사용하던 서버에 새로운 테이블만 추가하여 이용해줬다.
새 테이블 만들기를 이용해 원하는 테이블과 칼럼을 만들어주면 기본적인 DB 설정이 끝났다.
다음 서버와의 연결을 위해서 php 언어로 각각 로그인과 회원가입에 필요한 코드를 작성해주었다.
- Login.php
<?php
$con = mysqli_connect("localhost", " ", " ", " ");
mysqli_query($con,'SET NAMES utf8');
$userID = isset($_POST["userID"]) ? $_POST["userID"] : "";
$userPassword = isset($_POST["userPassword"]) ? $_POST["userPassword"] : "";
$statement = mysqli_prepare($con, "SELECT * FROM USERS WHERE userID = ? AND userPassword = ?");
mysqli_stmt_bind_param($statement, "ss", $userID, $userPassword);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userName, $userID, $userPassword, $userEmail, $userPhonenum);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)) {
$response["success"] = true;
$response["userName"] = $userName;
$response["userID"] = $userID;
$response["userPassword"] = $userPassword;
$response["userEmail"] = $userEmail;
$response["userPhonenum"] = $userPhonenum;
}
echo json_encode($response);
?>
- Register.php
<?php
$con = mysqli_connect("localhost", " ", " ", " ");
mysqli_query($con,'SET NAMES utf8');
$userName = isset($_POST["userName"]) ? $_POST["userName"] : "";
$userID = isset($_POST["userID"]) ? $_POST["userID"] : "";
$userPassword = isset($_POST["userPassword"]) ? $_POST["userPassword"] : "";
$userEmail = isset($_POST["userEmail"]) ? $_POST["userEmail"] : "";
$userPhonenum = isset($_POST["userPhonenum"]) ? $_POST["userPhonenum"] : "";
$statement = mysqli_prepare($con, "INSERT INTO USERS VALUES (?,?,?,?,?)");
mysqli_stmt_bind_param($statement, "ssssi", $userName, $userID, $userPassword, $userEmail, $userPhonenum);
mysqli_stmt_execute($statement);
$response = array();
$response["success"] = true;
echo json_encode($response);
?>
다음으로 안드로이드 스튜디오에서 로그인과 회원가입을 위한 layout 파일을 만들어주었다.
로그인에는 id, password만을 입력하고, 회원가입에는 id, password를 포함한 기본적인 사용자 정보를 함께 입력하도록 했다.
layout 파일은 작성이 간단함으로, 코드 설명은 생략하였다.
앞서 작성한 php 파일들과의 연결을 위해서 각각 LoginRequest.java와 RegisterRequest.java 클래스 파일을 만들어주었다.
그리고 각각 LoginActivity.java와 RegisterActivity.java에서 행동들을 구현해주었다.
- LoginActivity.java
private EditText edit_login_id, edit_login_password;
private Button Btn_Login, Btn_Register;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
edit_login_id = findViewById(R.id.edit_login_id);
edit_login_password = findViewById(R.id.edit_login_password);
Btn_Login = findViewById(R.id.Btn_Login);
Btn_Register = findViewById(R.id.Btn_Register);
Btn_Login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String userID = edit_login_id.getText().toString();
String userPassword = edit_login_password.getText().toString();
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
boolean success = jsonObject.getBoolean("success");
if (success) {
String userID = jsonObject.getString("userID");
String userPassword = jsonObject.getString("userPassword");
Toast.makeText(getApplicationContext(), "로그인에 성공하였습니다.", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("userID", userID);
intent.putExtra("userPassword", userPassword);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "로그인에 실패하였습니다.", Toast.LENGTH_SHORT).show();
return;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
LoginRequest loginRequest = new LoginRequest(userID, userPassword, responseListener);
RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
queue.add(loginRequest);
}
});
Btn_Register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(LoginActivity.this, RegisterStep1Activity.class);
startActivity(intent);
}
});
}
- RegisterActivity.java
Button Btn_RegisterSecondToThird;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_step2);
Btn_RegisterSecondToThird = findViewById(R.id.Btn_RegisterSecondToThird);
Btn_RegisterSecondToThird.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(RegisterStep2Activity.this, RegisterStep3Activity.class);
startActivity(intent);
}
});
}
- LoginRequest.java
public class LoginRequest extends StringRequest {
final static private String URL = "http://__.dothome.co.kr/Login.php";
private Map<String, String> map;
public LoginRequest(String userID, String userPassword, Response.Listener<String> listener) {
super(Method.POST, URL, listener, null);
map = new HashMap<>();
map.put("userID", userID);
map.put("userPassword", userPassword);
}
@Nullable
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
}
- RegisterRequest.java
public class RegisterStep1Request extends StringRequest {
final static private String URL = "http://__.dothome.co.kr/VeganRegister.php";
private Map<String, String> map;
public RegisterStep1Request(String userName, String userID, String userPassword, String userEmail, int userPhonenum, Response.Listener<String> listener) {
super(Method.POST, URL, listener, null);
map = new HashMap<>();
map.put("userName", userName);
map.put("userID", userID);
map.put("userPassword", userPassword);
map.put("userEmail", userEmail);
map.put("userPhonenum", userPhonenum + "");
}
@Nullable
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
}
추가로 AndroidManifest.xml 파일에 아래 두 가지를 추가해주어야 한다.
<uses-permission android:name="android.permission.INTERNET" />
android:usesCleartextTraffic="true"
[Android] php 이용하여 로그인/회원가입 구현
무료 호스팅이 가능한 닷홈 서버를 이용하여 안드로이드 스튜디오에서 로그인과 회원가입을 구현해보았다. 안드로이드 스튜디오, php, MySQL이 이용되었다. 닷홈 서버는 이전에 만들어둔 적이 있
baehj.tistory.com
'Android' 카테고리의 다른 글
[Android] 블로그 이전 - Naver Map API 사용해보기 (1) (0) | 2024.06.10 |
---|---|
[Android] 블로그 이전 - Firebase로 OCR 사용해보기 (2) (0) | 2024.06.10 |
[Android] 블로그 이전 - Firebase 이용하여 로그인 구현 with Kotlin (0) | 2024.06.10 |
[Android] 블로그 이전 - Firebase MLKit로 OCR 사용해보기 (0) | 2024.06.10 |
[Android] 블로그 이전 - 서버에 이미지 업로드하기 02 (0) | 2024.06.09 |