학교에서 진행하는 capston 대회 중 웹, 데이터베이스가 필요할 것 같아서 생활코딩 사이트를 통해 공부해 보았다.
생활코딩site : https://opentutorials.org/course/1
웹에서 사용자에게 입력받은 것들을 MySQL 이라는 데이터베이스에 저장하여 관리하고
그것을 이용해 보는 것을 매우 간단하게 해 보았다.
아파치 라는 웹 서버 프로그램을 사용 했고 MySQL , PHP 를 이용해서 만들어 보았다.
WAMP를 다운로드 하여 Apache, MySQL, PHP 를 한 번에 다운로드 할 수 있었고 그에 따라서 진행하였다.
https://seopseop911.tistory.com/27
우선 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 |
---|