Android-java

안드로이드 스튜디오-로그인 회원가입 만들기

춘행이 2020. 2. 13. 19:09
728x90

어플들을 쓰면 대부분이 회원가입과 로그인이 있습니다 

여러 방법이 있지만 여기서는 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_login.xml

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>

activity_register.xml

로그인을 한 뒤 나오는 main화면은 자신이 원하는 대로 구성할 수 있으니 따로 코드를 올리지는 않겠습니다

 

다음으로 DB를 생성하고 PHP파일을 연동해보겠습니다

https://www.dothome.co.kr/

 

닷홈 - 호스팅은 닷홈

닷홈은 무제한 웹호스팅, 무료호스팅, 도메인, 홈페이지빌더, 무제한메일, SSL보안인증서, 서버호스팅, 코로케이션 서비스를 제공하고 있습니다.

www.dothome.co.kr

위 사이트를 가서 회원가입을 한 뒤

무료 호스팅으로 들어가셔서 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파일 생성, 연동을 하였고 다음 글에서 안드로이드 스튜디오 상에서

자바 코드를 짜 보겠습니다.

728x90