Developing Myself Everyday
article thumbnail
Published 2023. 3. 30. 12:51
5. Android 연동을 위한 PHP 작성 Backend
이제는 생성된 데이터베이스와 Android를 연동시키기 위한 PHP를 구현해 보겠다.

 가장 먼저 해야할 일은 안드로이드 앱과 연동하는 PHP 코드를 작성하는 것이다. PHP 파일을 작성한 다음, SSH 클라이언트를 사용해서 원격 서버로 업로드 하는 과정을 거치면 우리가 원하는 기능을 구현할 수 있다.

 

PHP 개발환경 설정하기


 PHP를 작성하기 위해 사용되는 텍스트 에디터는 여러 가지가 존재한다. 그 중에서 가장 유명하고 많이 사용되는 Visual Studio Code 일명 VSCode를 이용해서 PHP를 작성하고자 한다.

 

 

① VSCode 환경 설정

 1) VSCode 설치

 - 아래의 사이트에서 VSCode를 설치할 수 있다.

 

Download Visual Studio Code - Mac, Linux, Windows

Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.

code.visualstudio.com

 

2) VSCode와 AWS EC2 Ubuntu연결

  - 다운로드한 VSCode에 들어간 다음 'Extensions(확장)' 탭을 선택한다.

 - Remote Development를 검색하고 'Remote Development' 를 설치한다.

 - Remote-SSH Configuration 설정

  F1을 눌러 'configuration' 을 검색한 뒤 'Remote-SSH: Open Configuration File' 을 클릭한다.

 클릭을 하게 되면 현재 컴퓨터에 설치되어 있는 config 파일 목록이 보인다. 그 파일을 수정하면 된다.

 수정할 파일의 형식은 다음과 같다

Host 별명
    HostName AWS EC2 고정적 IP
    User ubuntu
    IdentityFile AWS에 다운 받은 키의 위치 .pem 형식

 - AWS EC2로 연결하기 위해 F1을 누른 뒤, 'Remote-SSH: Connet to Host...' 를 눌러 접속

 - 접속을 누르게 되면 내가 이전에 설정했던 별명을 가지는 AWS EC2가 나온다. 이걸 클릭하게 되면 해당 서버로 접속 가능하다.

 - 그다음 PHP 작성을 위해 '/var/www/html' 파일로 이동한다. 그러기 위해서는 아래의 파일로 이동으로 간 다음 '/var/www/html' 를 검색하게 되면 html 파을 찾을 수 있고 해당 디렉토리로 이동하게 된다.

 이제 PHP을 아래의 폴더에 작성하면 된다.

 

② PHP 작성

  PHP는 다음과 같이 작성하였다. PHP를 다음과 같이 작성함으로서 아이디와 핸드폰 번호를 서버와 중복체크하여 만약 둘 중 하나라도 서버에 존재한다면 회원가입이 안되게하였다.


<?php
    header('Content-Type: application/json; charset=utf-8');
    // mysql 연결 정보
    $host = "localhost";
    $user = "username";
    $password = "password!";
    $database = "dbname";

    // mysql 연결
    $connect = mysqli_connect($host, $user, $password, $database) or die("mysql 연결 실패");

    // POST 데이터 처리
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        // 필수 항목 검증
        $required_params = array('username', 'userid', 'userpassword', 'userphone');
        foreach ($required_params as $param) {
            if (!isset($_POST[$param]) || empty(trim($_POST[$param]))) {
                http_response_code(400);
                echo json_encode(array(
                    'status' => 'false',
                    'message' => "$param is required"), JSON_UNESCAPED_UNICODE);
                return;
            }
        }

        // userid 중복 체크
        $userid = $_POST["userid"];
        $id_query = "SELECT userid FROM users WHERE userid='$userid'";
        $id_result = mysqli_query($connect, $id_query);
        $id_exists = mysqli_num_rows($id_result) > 0;

        // userphone 중복 체크
        $userphone = $_POST["userphone"];
        $phone_query = "SELECT userphone FROM users WHERE userphone='$userphone'";
        $phone_result = mysqli_query($connect, $phone_query);
        $phone_exists = mysqli_num_rows($phone_result) > 0;

        // userid와 userphone 중복 체크 후 삽입
        if ($id_exists) {
            http_response_code(400);
            echo json_encode(array(
                'status' => 'false',
                'message' => '중복된 아이디가 존재합니다'), JSON_UNESCAPED_UNICODE);
        } else if ($phone_exists) {
            http_response_code(400);
            echo json_encode(array(
                'status' => 'false',
                'message' => '중복된 핸드폰 번호가 존재합니다'), JSON_UNESCAPED_UNICODE);
        } else {
            $username = $_POST["username"];
            $userpassword = $_POST["userpassword"];
            $query = "INSERT INTO users (username, userid, userpassword, userphone, created_at, updated_at) VALUES ('$username', '$userid', '$userpassword', '$userphone', NOW(), NOW())";
            $result = mysqli_query($connect, $query);
            if ($result) {
                http_response_code(200);
                echo json_encode(array(
                    'status' => 'true',
                    'message' => '회원가입이 완료되었습니다'), JSON_UNESCAPED_UNICODE);
            } else {
                http_response_code(500);
                echo json_encode(array(
                    'status' => 'false',
                    'message' => '회원가입에 실패하였습니다'), JSON_UNESCAPED_UNICODE);
            }
        }
    } else {
        http_response_code(405);
        echo json_encode(array(
            'status' => 'false',
            'message' => 'Method Not Allowed'), JSON_UNESCAPED_UNICODE);
    }

    mysqli_close($connect);
?>

 

 필요한 PHP 파일 까지 작성을 완료했으니 다음 게시글에 Android Studio 코드를 작성해보겠다.

 

 

 

Reference

 

AWS EC2 VSCode 연결방법

AWS EC2 VSCode 연결방법 안녕하세요. 쏴아리입니다. 이번 포스팅에서는 AWS EC2 인스턴스에 로컬 VSCode를 연결하는 방법에 대해 소개합니다. AWS EC2 인스턴스 생성 본 포스팅에서는 AWS EC2 인스턴스가

deepmal.tistory.com

 

Aws의 ec2-ubuntu와 VSCode 연동하기, 연동 후 VSCode 에서 Apache 및 PHP , MySQL적용해보기

🟨 목 차 🟨 1. VSCODE 란 ? 1-1. VSCODE 주요 기능 1-2. VSCODE 특징 1-3. Visual Studio Code와 Visual Studio 차이 1-4. 내가 VSCode를 사용하려는 이유 2. aws에서 빌린 ec2-ubuntu와 VSCode 연동하기 3. aws에서 빌린 ec2-ubuntu

bj-turtle.tistory.com

 

profile

Developing Myself Everyday

@배준형

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!