Web & Database

PHP-MySQL 연동하여 원하는 웹 만들기

섭섭입니다 2020. 8. 12. 16:17

학교에서 진행하는 capston 대회 중 웹, 데이터베이스가 필요할 것 같아서 생활코딩 사이트를 통해 공부해 보았다. 

 

생활코딩site : https://opentutorials.org/course/1

 

 

 

웹에서 사용자에게 입력받은 것들을 MySQL 이라는 데이터베이스에 저장하여 관리하고

 

그것을 이용해 보는 것을 매우 간단하게 해 보았다.

 

 

 

아파치 라는 웹 서버 프로그램을 사용 했고 MySQL , PHP 를 이용해서 만들어 보았다.

 

WAMP를 다운로드 하여 Apache, MySQL, PHP 를 한 번에 다운로드 할 수 있었고 그에 따라서 진행하였다.

 

https://seopseop911.tistory.com/27

 

Windows에 WAMP 실행, 설치방법

WAMP 란? Windows Apache MySQL PHP 의 약자로 윈도우에서 3가지를 한 번에 설치하는 모듈을 뜻 함 우선 아래의 사이트에 접속. https://bitnami.com/stack/wamp/installer Install WAMP, Download WAMP show M..

seopseop911.tistory.com

 

 

 

우선 MySQL에서 데이터베이스와 TABLE을 짠다.

 

학교 capston 대회에 참가하게 돼 DATABASE의 이름을 capston 이라 지음.

 

 

mysql> CREATE DAtABASE capston;
mysql> use capston;
mysql> create table topic(
    -> id int(11) not null AUTO_INCREMENt primary key,
    -> stNUM int(11) null,
    -> name varchar(30) null,
    -> temperature decimal(7,2) null,
    -> created DATETIME NOT NULL);

 

 

id 값은 자동적으로 증가 하도록, 

stNUM은 사용자입력 값이기에 NULL

name은 사용자입력 값이기에 NULL

temperature은 소숫점이 가능하기에 형식을 decimal(7,2) 로 하였고 NULL

created는 자동적으로 시간을 체크하여 표기해 주도록 하였다.

 

 

 

아래의 사진은 만들어진 topic 이라는 table의 형식이다.

 

 

Database에 값을 insert하는 것은 웹에서 할 것이다.

 

< create.php >

<?php
$conn = mysqli_connect(
  'localhost', // 주소
  '사용자ID',
  '비밀번호',
  'capston'); // 데이터베이스 이름

$sql = "SELECT * FROM topic";
$result = mysqli_query($conn, $sql);

?>
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>WEB</title>
  </head>
  <body>
    <h1>Hoseo University</h1>
    <h3> 당신의 학번, 이름, 체온을 입력하세요. </h3>
    <form action="process_create.php" method="POST">
      <p><input type="text" name="stNUM" placeholder="학번 (ex)20161712"></p>
      <p><input type="text" name="name" placeholder="이름 (ex)홍길동"></p>
      <p><input type="text" name="temperature" placeholder="체온 (ex)36.5"></p>
      <p><input type="submit"></p>
    </form>
  </body>
</html>

 

< process_create.php >

<?php
$conn = mysqli_connect(
  'localhost',
  '사용자ID',
  '비밀번호',
  'capston');
  # title, description 이라는 사용자가 입력한 정보를 그대로 php에 입력하는 행위는 보안에 취약, 따라서 관리 필요

  $filtered = array(
    'stNUM'=>mysqli_real_escape_string($conn, $_POST['stNUM']),
    'name'=>mysqli_real_escape_string($conn, $_POST['name']),
    'temperature'=>mysqli_real_escape_string($conn, $_POST['temperature'])
  );

$sql = "
  INSERT INTO topic
    (stNUM, name, temperature, created)
    VALUES(
      '{$filtered['stNUM']}',
      '{$filtered['name']}',
      '{$filtered['temperature']}',
        NOW()
    )
";
$result = mysqli_query($conn, $sql);
if($result === false){
  echo '저장하는 과정에서 문제가 생겼습니다. 관리자에게 문의해주세요';
  error_log(mysqli_error($conn));
} else {
  echo '성공했습니다. <a href="create.php">돌아가기</a>';
}
?>

 

위와 같이 코드를 짜서 접속해 보면 아래와 같이 웹이 만들어 진다.

 

 

 

학번, 이름, 체온을 입력하여 제출 버튼을 클릭하면 "성공했습니다." 라는 메시지가 뜨고

 

 

 

mysql 에서 select * from topic; 을 입력해보면 

 

아래와 같이 MySQL에 데이터 값이 insert 된 것을 볼 수 있다.

 

 

 

그리고 웹에서 데이터를 직관적으로 볼 수 있게 끔 alldata.php 파일을 만들어 아래와 같이 사용하였다.

 

 

 

< alldata.php >

 

<?php
$conn = mysqli_connect(
  'localhost', // 주소
  '사용자ID',
  '비밀번호',
  'capston');

 echo '<h1>Database</h1>';

$sql = "SELECT * FROM topic";
$result = mysqli_query($conn, $sql);
  while($row = mysqli_fetch_array($result)) {
    echo $row['stNUM'].' '.$row['name'].' '.$row['temperature'].'<br>';
    echo $row['created'].'<br>'.'<br>';
}

 

 

 

 

 

핸드폰에서 웹서버 접속 영상

 

 

 

 

 

 

생활코딩에서는 사용자가 입력할 수 있는것에 대해선 모두 의심하라. 라고 하였다

 

보안 관련문제도 좀 더 공부해 보아야 할 것이다.

 

그리고 좀 더 구체적인 계획과 의도가 생긴다고 좀 더 구성해 볼 필요성이 있다.  

 

 

'Web & Database' 카테고리의 다른 글

Windows에 WAMP 실행, 설치방법  (3) 2020.08.05