이번에도 생활코딩 php 수업 내용을 바탕으로 웹 애플리케이션의 핵심인 CRUD 중, 데이터를 서버에 저장하는 글 생성(Create) 기능을 구현하는 방법에 대해 알아보겠다.
이전 포스트
php 사용자 정의 함수: 생성, 매개변수, return 사용법
웹앱 완성하기 예고
웹사이트의 게시판을 만들기 위해서 필요한 이런 기능들을 줄여서 CRUD라고 부른다.
- C - Create 생성
- R - Read 읽기
- U - Update 수정
- D - Delete 삭제
이제 이 CRUD 기능을 만들기 위한 공부들을 해나가 보겠다.
일단 이번 포스트에서는 Create 기능을 구현해 보자.
form과 POST
생활코딩의 php 수업 영상 중에서 가장 긴 영상이다.
아마 그만큼 가장 중요하면서 가장 복잡한 내용이기 때문일 거다.
영상에서 사용한 코드들을 하나씩 살펴보자.
<!DOCTYPE html>
<html>
<body>
<form action="form.php" method="POST">
<p><input type="text" name="title" placeholder="제목"></p>
<p><textarea name="description"></textarea></p>
<p><input type="submit"></p>
</form>
</body>
</html>
이 코드는 사용자가 입력한 데이터를 서버로 전송하기 위한 HTML 폼Form 양식이다.
사용자가 제목과 내용을 작성하고 제출Submit 버튼을 누르면, 그 데이터가 form.php라는 파일로 전달되도록 설계되어 있다.
(이 글의 카테고리는 php인데) HTML 코드이기 때문에 php와 관련된 부분들만 설명하겠다.
form action="form.php": 사용자가 제출 버튼을 눌렀을 때, 데이터를 받아 처리할 목적지 파일(form.php)을 지정한다.form method="POST": 데이터를 전송하는 방식이다.
POST 방식은 데이터가 URL에 노출되지 않고 본문에 포함되어 전송되므로, 글쓰기나 로그인처럼 데이터를 생성・수정할 때 주로 사용한다.input type="text"와textarea의name속성: 서버(php)에서 데이터를 받을 때 이 이름을 식별자로 사용한다. (예:$_POST['title'])
영상 속의 form.php에 사용된 내장 함수 file_put_contents()는 아래에서 정리하겠다.
글 생성
뭔가 복잡하게 코드를 이것저것 바꾸긴 했지만, 다 공부했던 것들이다.
위의 영상에서도 나왔던 내장 함수 file_put_contents()와 함께 header()에 대해서 설명하겠다.
<?php
file_put_contents('data/'.$_POST['title'], $_POST['description']);
header('Location: /index.php?id='.$_POST['title']);
die;
?>
1. file_put_contents()
file_put_contents() 함수는 사용자가 입력한 글을 실제 파일로 만들어 저장하는 역할을 한다.
'data/'.$_POST['title'](파일명):data/라는 디렉토리 안에 사용자가 입력한 제목(title)을 파일 이름으로 사용하겠다는 뜻이다.$_POST['description'](내용): 사용자가 본문에 입력한 데이터(description)를 파일의 내용으로 채운다.
2. header()
header() 함수는 브라우저에게 "지금 즉시 이 주소로 이동해."라고 명령하는 역할을 한다.
파일 저장이 끝난 후, 사용자가 방금 작성한 글을 바로 확인할 수 있도록 해당 글의 상세 페이지(index.php?id=제목)로 사용자를 강제 이동시킨다.
3. die 혹은 exit
생활코딩 수업 영상에서는 나오지 않은 die;(또는 exit;)는 php에서 "여기서 즉시 코드를 중단하라"고 명령하는 종료 스위치 같은 역할을 한다.
위의 코드처럼 header와 die가 코드의 맨 마지막에 위치한다면, die가 없어도 어차피 실행할 코드가 없으므로 겉으로 보기엔 차이가 없다.
기술적으로는 없어도 돌아가지만, 보안과 효율성을 위해 반드시 넣어주는 것이 관례다.
다음 포스트
php, CRUD 글 수정 (feat. rename 함수)
응원이나 피드백이 담긴 댓글은 제가 계속 블로그를 해나갈 수 있는 원동력이 됩니다. 😊
지인에게 보여주고 싶은 글이었다면 URL을 복사해서 메신저나 소셜 미디어에 공유해 주세요.
0 Comments
댓글 쓰기
🔸 댓글은 블로그 운영자의 승인 후에 블로그에 표시됩니다.
🔸 비로그인 방문자 분께서는 '익명'보다 이름/URL로 댓글을 남겨주시면 감사하겠습니다. (URL은 생략 가능합니다.)
🔸 구글 로그인 방문자는 '알림 사용'에 체크를 하시면, 남겨주신 댓글에 대한 답글 알림을 메일로 받아볼 수 있습니다. 📩