일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- java
- Android
- StatefulWidget
- 로그인
- Provider
- swift
- 안드로이드
- firebase_auth
- setState
- go_router
- 이메일
- 1과목
- 상태관리
- 회원가입
- 정보처리기사
- dart
- Null Safety
- UserAccountsDrawerHeader
- IOS
- GetX
- BottomNavigationBar
- Kotlin
- 안드로이드 스튜디오
- firebase
- 함수
- flutter
- Cocoa touch Framework
- non-nullable
- auth
- 변수
- Today
- Total
앱 개발 공부방
안드로이드 스튜디오-로그인 회원가입 만들기 본문
어플들을 쓰면 대부분이 회원가입과 로그인이 있습니다
여러 방법이 있지만 여기서는 php와 mysql을 사용하여 DB와 연동시켜 만들도록 하겠습니다
먼저 XML부터 만들겠습니다
activity_login.xml(로그인 화면 xml)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LoginActivity">
<EditText
android:id="@+id/et_pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:ems="10"
android:hint="패스워드"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_id" />
<EditText
android:id="@+id/et_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="300dp"
android:layout_marginEnd="8dp"
android:ems="10"
android:hint="아이디"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn_login"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="로그인"
app:layout_constraintEnd_toEndOf="@+id/et_pass"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/et_pass"
app:layout_constraintTop_toBottomOf="@+id/et_pass" />
<Button
android:id="@+id/btn_register"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="회원가입"
app:layout_constraintEnd_toEndOf="@+id/btn_login"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/btn_login"
app:layout_constraintTop_toBottomOf="@+id/btn_login" />
</androidx.constraintlayout.widget.ConstraintLayout>
activity_register.xml(회원가입 화면 xml)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RegisterActivity">
<EditText
android:id="@+id/et_id"
android:layout_width="200dp"
android:layout_height="45dp"
android:layout_marginTop="30dp"
android:ems="10"
android:hint="Email"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/et_pass"
android:layout_width="200dp"
android:layout_height="45dp"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="패스워드"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="@+id/et_id"
app:layout_constraintStart_toStartOf="@+id/et_id"
app:layout_constraintTop_toBottomOf="@+id/et_id" />
<EditText
android:id="@+id/et_passck"
android:layout_width="200dp"
android:layout_height="45dp"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="패스워드 확인"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="@+id/et_pass"
app:layout_constraintStart_toStartOf="@+id/et_pass"
app:layout_constraintTop_toBottomOf="@+id/et_pass" />
<EditText
android:id="@+id/et_name"
android:layout_width="200dp"
android:layout_height="45dp"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="이름"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="@+id/et_passck"
app:layout_constraintStart_toStartOf="@+id/et_passck"
app:layout_constraintTop_toBottomOf="@+id/et_passck" />
<EditText
android:id="@+id/et_age"
android:layout_width="200dp"
android:layout_height="45dp"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="나이"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="@+id/et_name"
app:layout_constraintStart_toStartOf="@+id/et_name"
app:layout_constraintTop_toBottomOf="@+id/et_name" />
<EditText
android:id="@+id/et_hak"
android:layout_width="200dp"
android:layout_height="45dp"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="학번"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="@+id/et_age"
app:layout_constraintStart_toStartOf="@+id/et_age"
app:layout_constraintTop_toBottomOf="@+id/et_age" />
<EditText
android:id="@+id/et_maj"
android:layout_width="200dp"
android:layout_height="45dp"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="전공"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="@+id/et_hak"
app:layout_constraintStart_toStartOf="@+id/et_hak"
app:layout_constraintTop_toBottomOf="@+id/et_hak" />
<Button
android:id="@+id/btn_register"
android:layout_width="200dp"
android:layout_height="45dp"
android:layout_marginTop="20dp"
android:text="회원가입"
app:layout_constraintEnd_toEndOf="@+id/et_maj"
app:layout_constraintStart_toStartOf="@+id/et_maj"
app:layout_constraintTop_toBottomOf="@+id/et_maj" />
<Button
android:id="@+id/validateButton"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:layout_marginTop="28dp"
android:text="중복확인"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.058"
app:layout_constraintStart_toEndOf="@+id/et_id"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
로그인을 한 뒤 나오는 main화면은 자신이 원하는 대로 구성할 수 있으니 따로 코드를 올리지는 않겠습니다
다음으로 DB를 생성하고 PHP파일을 연동해보겠습니다
위 사이트를 가서 회원가입을 한 뒤
무료 호스팅으로 들어가셔서 FTP아이디, 비밀번호 DB명, 아이디, 비밀번호를 입력하시고 신청하기를 하면 됩니다
그리고 '자신의 아이디'.dothome.co.kr/myadmin으로 들어가셔서 로그인을 해줍니다
들어가시면 자신의 db를 클릭후 상단에 위 사진처럼 목록이 있는데 sql을 들어가셔서 회원가입과 로그인을 할 때 필요한 사용자의 아이디, 패스워드, 나이 등이 있는 TABLE을 생성합니다
CREATE TABLE `USER`(
userID VARCHAR(50) NOT NULL,
userPassword VARCHAR(50) NOT NULL,
userName VARCHAR(50) NOT NULL,
userAge INT NOT NULL,
userHak INT NOT NULL,
userMajor VARCHAR(50) NOT NULL,
PRIMARY KEY(userID)
);
이러면 사용자의 아이디,패스워드,이름,나이,학번,전공이 있는 db를 생성했습니다
다음으로 php를 db와 연동하기 위해 프로그램을 다운받습니다
https://filezilla-project.org/
위 사이트를 들어가 'FileZilla'라는 프로그램을 다운로드합니다(FTP 접속을 위한 프로그램)
프로그램을 실행하면 이런 화면인데 연결을 위해서 호스트, 사용자명 , 비밀번호를 입력합니다
호스트 : '자신의 아이디'. dothome.co.kr
사용자명 : 자신의 아이디
비밀번호 : 자신의 비밀번호
포트 : 23
후 연결을 누르시면 접속이 됩니다
다음으로 html폴더에다 php 파일을 넣을 건데 php 파일은 3가지입니다
Login2.php(로그인을 위한 php 파일)
<?php
$con = mysqli_connect("localhost", "자신의 아이디", "자신의 비밀번호", "자신의 아이디");
mysqli_query($con,'SET NAMES utf8');
$userID = $_POST["userID"];
$userPassword = $_POST["userPassword"];
$statement = mysqli_prepare($con, "SELECT * FROM USER 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, $userID, $userPassword, $userName, $userAge, $userHak, $userMajor);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)) {
$response["success"] = true;
$response["userID"] = $userID;
$response["userPassword"] = $userPassword;
$response["userName"] = $userName;
$response["userAge"] = $userAge;
$response["userHak"] =
$userHak;
$response["userMajor"] =
$userMajor;
}
echo json_encode($response);
?>
Register2.php(회원가입을 위한 php 파일)
<?php
$con = mysqli_connect("localhost", "자신의 아이디", "자신의 비밀번호", "자신의 아이디");
mysqli_query($con,'SET NAMES utf8');
$userID = $_POST["userID"];
$userPassword = $_POST["userPassword"];
$userName = $_POST["userName"];
$userAge = $_POST["userAge"];
$userHak = $_POST["userHak"];
$userMajor = $_POST["userMajor"];
$statement = mysqli_prepare($con, "INSERT INTO USER VALUES (?,?,?,?,?,?)");
mysqli_stmt_bind_param($statement, "sssiis", $userID, $userPassword, $userName, $userAge, $userHak, $userMajor);
mysqli_stmt_execute($statement);
$response = array();
$response["success"] = true;
echo json_encode($response);
?>
UserValidate.php(아이디 중복체크를 위한 php 파일)
<?php
$con = mysqli_connect("localhost", "자신의 아이디", "자신의 비밀번호", "자신의 아이디");
$userID = $_POST["userID"];
$statement = mysqli_prepare($con, "SELECT userID FROM USER WHERE userID = ?");
mysqli_stmt_bind_param($statement, "s", $userID);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userID);
$response = array();
$response["success"] = true;
while(mysqli_stmt_fetch($statement)){
$response["success"]=false;
$response["userID"]=$userID;
}
echo json_encode($response);
?>
편집기를 검색 후 설치한 다음 위 코드처럼 php 파일을 생성 후 파일 질라 html폴더에 넣어줍니다.
여기까지 디자인, DB 생성 , PHP파일 생성, 연동을 하였고 다음 글에서 안드로이드 스튜디오 상에서
자바 코드를 짜 보겠습니다.
'Android-java' 카테고리의 다른 글
안드로이드 스튜디오-SNS로그인 기능 구현시 필요한 해시 키 값 구하기 (1) | 2020.02.15 |
---|---|
안드로이드 스튜디오-로그인 회원가입2 (5) | 2020.02.13 |
안드로이드 스튜디오-List View (0) | 2020.02.07 |
안드로이드 스튜디오-Intent로 화면 이동 (0) | 2020.01.13 |
안드로이드 스튜디오-버튼 클릭 이벤트 (6) | 2020.01.13 |