본문 바로가기

모바일 개발/안드로이드

로그인, 회원가입 만들기(2) - DB연동, 서버 셋팅

이제 본격적으로 소스코드 작성해 보겠습니다.

 

 

우선 volley을 이용하려면 권한을 줘야만 사용이 가능합니다.

 

<user-permission android:name="android.permission.INTERNET"/><!-- 인터넷 권한 선언-->

<user-permission android:name="android.permission.INTERNET"/><!-- 인터넷 권한 선언-->

 

한 줄을 추가합니다.

 

그리고 아래에 intent-filter 부분이 있습니다. 그걸 loginactivity로 옮겨 줄게요

 

이렇게요

 

andrioid:exported는 외부 앱에서 직접 액세스가 가능한지 안 하는지 정해주는 보안 옵션입니다.

intent-filter 쓸려면 true을 써야만 됩니다.

 

 

그리고 이렇게 하면 이 앱을 켜면 제일 먼저 보이는 화면이 loginactivity가됩니다.

 

이제 DB 연동을 하면 되겠죠!

 

윈도우에서 DB 연동을 하려면 먼저 서버가 필요하고 그다음으로 그 서버에 있는 php문으로 통신을 하면 DB에 접속이

가능하겠죠!

 

저는 칼리리눅스에 APM을 설치했습니다. 그러니 저는 따로 서버 구축할 비용도 없을뿐더러 

서버와의 FTP 연동.. 뭐 복잡하네요.. 파일질라까지 설치해서 서버(DNS가 되어 있는)와의 FTP 연결해서

phpmyadmin 사용.. 솔직히 FTP는 파일 전송 시스템이라 꼭 필요한가를 의심을 하게 되네요.

 

저는 간단하게 VMware에 있는 브리지 설정으로 간단하게 통신하겠습니다.

만약 따로 서버가 있으시다면 안 하셔도 됩니다! 그 도메인으로 요청을 하기만 하면 되니깐요

 

우선 VMware 키시기 전에 브리지 설정을 하겠습니다.

이렇게 체크

 

이게 무슨 뜻 이냐면 

브리지는 말 그대로 다리 역할을 합니다.

게스트 시스템(칼리 리눅스) 와 호스트 시스템(자신이 쓰는 OS)이 동일한 네트워크에 속하게 됩니다.

바로 밑에 있는 replicate는 네트워크 어댑터까지 동일하게 유지해서 네트워크 설정이 동기화되게 합니다.

 

한마디로 VMware에 있는 칼리랑 제가 쓰는 윈도랑 네트워크가 연결되어 있다는 겁니다.

 

 

 

칼리리눅스에 APM을 설치한 상태이시면 

https://mynameisarke.tistory.com/2

 

[노말틱 모의 해킹 취업반 1주차 개발과제 (1)] APM 세팅

APM세팅하기 우선적으로 APM이 무엇인지 알아봅시다. APM이란 Apache, Php, MySql의 맨 앞 알파벳을 따와서 만든 것입니다. . . . . 끝내기엔 쪼금 성의 없으니 더 설명하겠습니다. -Apache 란?- 풀 네임은 Apa

mynameisarke.tistory.com

 

간단하게 저는 login.php 추가했습니다. /var/www/html/ 에다가 추가하셔야 돼요!

 

간단

 

간단하게 통신이 되나 만 확인 하기 위해 작성했습니다.

 

그리고 칼리리눅스에 ifconfig을 쳐서 inet 즉 자신의 ip을 알아냅니다.

sudo service apache2 start 하시고

sudo service mysql start 합니다.

 

그리고 윈도우의 크롬에 한번 접속을 해볼게요.

 

http://[자신 리눅스ip]/login.php

 

잘 되네요.

 

이렇게 간단하게 서버와 연결을 했습니다. 만약 자신 서버가 있다고 하면 저기에 ip가 아닌 자신 서버 주소을 입력하면

되겠죠. 그리고 그 서버에 php문을 작성하면 됩니다.

 

그리고 DB연동은 제가 게시판 작성하면서 연결을 한 것과 동일합니다.

저는 칼리 리눅스에 APM을 전부 설치해서 안에 서버역할도 하고 DB 역할도 합니다.

 

그러니 DB연동은 매우 쉽죠.

 

일단 칼리 리눅스에 phpmyadmin을 켜서 저희가 회원가입을 하면 들어갈 정보 테이블을 만들어 주겠습니다.

 

root 계정 보단 개발자 전용 유저를 따로 만들었습니다.

 

https://mynameisarke.tistory.com/5

 

[노말틱 모의 해킹 취업반 1주차 개발과제 (4)] DB에 데이터를 넣고, 화면에 출력해보기

저희가 할 일은 크게 3가지 이겠네요! -데이터베이스에 새로운 table 만들기 -서버랑 데이터베이스랑 연결하기 -데이터베이스 출력하기 참고로 데이터베이스 관련 언어나 문법은 https://opentutorials.

mynameisarke.tistory.com

만약 만드시는 방법 모르시면 여기 들어가셔서 아래 지점에 phpmyadmin을 이용한 유저 만들기 있습니 참고하세요!

 

 

DB 이름은 LOGIN이라 하겠습니다. 오른쪽에 새로운 누르시면 돼요.

 

만들기!

 

테이블 이름은 User_info이라고 하겠습니다.

 

컬럼 수는 5개

식별자id 아이디 비밀번호 이메일 전화번호 이렇게 5개 만들게요 나중에 또 추가 가능하답니다.

 

그다음으로 각 칼럼 세팅은

 

이렇게 했습니다.

 

만약 칼럼 추가 하시고 싶으시면 위에 실행 버튼 보시 실 거예요 그거 누르시면 기본 1줄 추가됩니다.

그리고 저장

 

 

이러면 DB셋팅 끝입니다.

 

이제 php문도 간단하게 작성을 할게요.

 

솔직히! 모바일 앱 공부하러 왔는데 웹 세팅하니깐 답답하겠죠!

 

그냥 코드 보여드리겠습니다.

만약 공부 하고 싶으시다면 제 블로그에 개발과제 란에 있고요 아니면 다른 사이트에 검색하셔서 공부하셔도 됩니다.

 

딱히 웹 상에 login 페이지 보일 필요 없으니 로그인하는 과정만 있으면 되겠죠.

 

https://mynameisarke.tistory.com/37

 

[노말틱 모의 해킹 취업반 추가 개발과제 ] PreparedStatement 적용하기 -2

안녕하세요 전에 하던 거 이어서 PreparedStatement를 계속 적용하겠습니다. -inquiry_board.php board.php와 거의 똑같게 복사붙이 기하겠습니다. INQUIRY_MENU

mynameisarke.tistory.com

제가 이전에 만들어 둔 게시판 코드들이긴 합니다. 여기에서 process_login.php 이거랑 process_join.php 이거 가져오고

 

조금 수정하겠습니다. 칼럼 명이랑 테이블 명은 맞춰야 되니깐요.

 

 

-DB_INFO.php

 

<?php 
    $host = 'localhost';
    $username = 'user';
    $password = 'password';
    $dbname = 'LOGIN';
?>

 

user는 저희가 phpmyadmin 접속할 때 쓰는 id 작성하시면 됩니다.

password는 비밀번호 작성하시면 되고요.

dbname은 저희가 방금 만든 DB 이름 작성하시면 됩니다. 테이블 이름이 아니에요!

 

-login.php

<?php
    include 'DB_INFO.php'; //데이터 베이스 정보

    //데이터베이스 연결
    $conn = mysqli_connect($host,$username,$password,$dbname);

    session_start(); //세션 시작
    //오류시 종료
    if(mysqli_connect_errno()) {
        die("데이터 베이스 오류: ". mysqli_connect_error());
    }
    //POST로 전달된 정보 받기
    $login_id = filter_var(strip_tags($_POST['id']),FILTER_SANITIZE_SPECIAL_CHARS);
    $login_pw = $_POST['pw'];

    //ID 찾는 쿼리문
    $sql = "SELECT * FROM User_info WHERE user_id= ? ";

    $stmt = mysqli_prepare($conn,$sql);

    mysqli_stmt_bind_param($stmt, 's', $login_id);
    mysqli_stmt_execute($stmt);

    //쿼리 실행
    $result = mysqli_stmt_get_result($stmt);

    $response = array();
    $response['success'] = false;

    //쿼리 실행 결과 확인
    if(mysqli_num_rows($result) > 0 ) { 
        //ID있으니 비밀번호 검증
        $row = mysqli_fetch_array($result)  ;
        $hashed_pw = $row['user_pw']; //결과 배열 중 pw을 가져온다
        if(password_verify($login_pw,$hashed_pw)) {
            //로그인 성공
            session_regenerate_id(); //ID 자동 갱신
            $response['success'] = true;
            $response['user_id'] = $row['user_id'];
            $response['user_pw'] = $row['user_pw'];
            $response['user_email'] = $row['user_email'];
            $response['user_phone'] = $row['user_phone'];

            echo json_encode($response);
        }
    }

    mysqli_stmt_close($stmt);
    exit();
?>

 

 

 

-join.php

<?php
    include 'DB_INFO.php'; //데이터 베이스 정보

    session_start(); //세션 시작

    //데이터베이스 연결
    $conn = mysqli_connect($host,$username,$password,$dbname);

    //데이터베이스 오류시 종료
    if(mysqli_connect_errno()) {
        die("데이터 베이스 오류: ". mysqli_connect_error());
    }
    
    //POST로 전달된 정보 받기
    $login_id = filter_var(strip_tags($_POST['id']),FILTER_SANITIZE_SPECIAL_CHARS);
    $login_pw = $_POST['pw'];
    $user_email = filter_var(strip_tags($_POST['email']),FILTER_SANITIZE_SPECIAL_CHARS);
    $user_phone = filter_var(strip_tags($_POST['phone']),FILTER_SANITIZE_SPECIAL_CHARS);
    
    //비밀번호는 해싱
    $hashed_pw = password_hash($login_pw, PASSWORD_DEFAULT);

    //새로운 사용자를 데이터베이스에 삽입문
    $sql = "INSERT INTO User_info (user_id, user_pw, user_email, user_phone)
    VALUES (?,'$hashed_pw',?,?)";

    $stmt2 = mysqli_prepare($conn,$sql);
    mysqli_stmt_bind_param($stmt2, 'sss', $login_id,$user_email,$user_phone);

    $response = array();

    //sql문 실행
    if(mysqli_stmt_execute($stmt2)) {
        $response["success"] = true;
    }
    mysqli_stmt_close($stmt2);

    //회원가입 후 닫기
    exit();
?>

 

 

만약 나중에 하다가 오류가 나면 그때 가서 수정하겠습니다.

 

진짜.. 모바일 앱 만드는데 서버 세팅부터 DB 세팅까지 하니 귀찮네요!

 

이제 준비는 마쳤습니다. 준비하는데 만 긴 글 2개가 나오네요.

 

다음 포스팅에 이어서 하겠습니다.