PHP 코드 해체 분석기 | Today I Learned

hoya·2021년 6월 2일
0

Today I Learned

목록 보기
3/11
post-thumbnail

안드로이드 데이터베이스 연동으로 회원가입 및 중복확인을 하는 과정에서 PHP를 접하게 되었다. 사실 생기초 중 기초지만, 지금이라도 기초를 천천히 다져보고자 블로그에서 본 코드를 해체 분석 해보고자 한다.


📌 1. register.php (회원가입)

<?php
  $con = mysqli_connect("localhost", "사용자명", "비밀번호", "스키마");
  // mysql 과 연동하는 부분,
  mysqli_query($con, 'SET NAMES utf8');
  // mysqli_set_charset($conn,'utf8');
  // mysqli 한글 깨짐 방지


  // POST 형식으로 MySQL로부터 데이터를 받아오는 부분
  // "$변수" 로 변수 선언
  $id = $_POST["id"];
  $password = $_POST["password"];
  $name = $_POST["name"];
  $email = $_POST["email"];

  
  $statement = mysqli_prepare($con, "INSERT INTO userinfo VALUES(?, ?, ?, ?)");
  // 해당 DB에 쿼리 입력
  mysqli_stmt_bind_param($statement, "sssi", $id, $password, $name, $email);
  // 파라미터를 바인드하는 부분, 값을 입력한다.
  // "sssi" -> 문자열, 문자열, 문자열, 정수형을 의미한다.
  
  mysqli_stmt_execute($statement);
  // 바인드한 쿼리문을 실제로 실행한다.
  
  $response = array();
  // POST로 넘겨받은 정보를 이용, 데이터를 response 배열로..
  $response["success"] = true;
  // response["success"] 선언
  
  echo json_encode($response);
  // 정보를 담고있는 배열을 json형식의 문자열로 변환하여 반환하는 
  // json_encode()를 이용해서 정보를 전달한다.
  // 안드로이드에서 받고자 할 때 JSONObject로 받는다.
?>

📌 2. login.php (로그인)

<?php
  $con = mysqli_connect("localhost", "사용자명", "비밀번호", "스키마");
	// mysql 연결, IP, 사용자명, 비밀번호, 데이터베이스
  mysqli_query($con, 'SET NAMES utf8');
	// mysqli_set_charset($conn,'utf8');
	// mysqli 한글 깨짐 방지

  $id = $_POST["id"];
  $password = $_POST["password"];

	// $ -> 변수 선언
	// POST로 해당 필드를 받아오는 모습

  $statement = mysqli_prepare($con, "SELECT * FROM userinfo WHERE id = ? AND password = ?");
  mysqli_stmt_bind_param($statement, "ss", $id, $password);
	// "ss" -> 문자열 2개, 문자열 1개에 정수형 1개면 "si", SQL과 매개변수를 묶는 역할
  mysqli_stmt_execute($statement);
	// 준비된 SQL문 실행

  mysqli_stmt_store_result($statement);
	// SELECT, SHOW, DESCRIBE를 성공적으로 실행한 모든 쿼리에 대해 호출해야 함
	// 생성된 레코드셋을 가져와 저장함
  mysqli_stmt_bind_result($statement, $id, $password, $name, $email);
	// 검색 결과로 반환되는 레코드셋의 필드를 php 변수에 바인딩
	// mysqli_stmt_fetch 호출 전, 모든 필드가 바인드되어야 함


  $response = array();
	// POST를 이용해 넘겨받은 정보를 이용해
	// SELECT문으로 db로 부터 어떤 값을 찾아 해당 데이터를 (response)배열에 넣어준다.
  $response["success"] = false;

// 필드 정보 출력

  while(mysqli_stmt_fetch($statement)){
    $response["success"] = true;
    $response["id"] = $id;
    $response["password"] = $password;
    $response["name"] = $name;
    $response["email"] = $email;
  }

	// 정보를 담고있는 배열을 json형식의 문자열로 변환하여 반환하는 
	// json_encode()를 이용해서 정보를 전달한다.
	// (안드로이드에서 받고자 할 때 JSONObject로 받는다.)  
   echo json_encode($response);
?>

📌 3. idcheck.php (아이디 찾기)

<?php 
  $con = mysqli_connect("localhost", "사용자명", "비밀번호", "스키마");

    $name = $_POST["name"];
    $email = $_POST["email"];
    $id = NULL;
   
    $statement = mysqli_prepare($con, "SELECT id FROM userinfo WHERE name = ? AND email = ?");
    // 조건에 맞는 ID를 출력한다.
    mysqli_stmt_bind_param($statement, "ss", $name, $email);
    mysqli_stmt_execute($statement);
    mysqli_stmt_store_result($statement);
    // select 문 실행시에는 항상 넣어주어야 한다.
    mysqli_stmt_bind_result($statement,$id);
    // 변수 id($id) 에 결과값 입력
    

    $response = array();
    $response["success"] = false;
    // 조건에 맞는 id가 없으면 false 출력

    while(mysqli_stmt_fetch($statement)){
        $response["success"]=true;
        $response["id"]=$id;
        // 조건에 맞는 id가 있으면 true 출력과 동시에,
        // response 배열의 id 에 변수 id 값을 입력한다.
        
    }
    echo json_encode($response);

?>

회원 정보에 관해 만드는 PHP는 위의 케이스들을 기반으로 이루어진다. 회원 중복확인 / 비밀번호 찾기 등등..

활용을 어떻게 하는지에 따라서, 무궁무진하게 사용한 예시들이니 잘 기억해두는 것이 좋을듯 하다. 다음에는 PHP 라는 언어 자체에 대해 자세하게 알아볼 계획이다.


참고 및 출처

PHP 예시

profile
즐겁게 하자 🤭

0개의 댓글