-
[PHP] 게시판 만들기 - 글쓰기 기능 구현 ①프로그래밍/PHP 2020. 2. 10. 18:18
이번 시간에는 글쓰기 기능을 구현해보겠습니다. 다음 실습으로는 '비밀 글' 기능을 추가하여 좀 더 심화학습을 해보도록 하겠습니다.
정리하자면, 글쓰기와 관련된 실습은 다음과 같습니다.
1. 글쓰기 화면을 구현하기 위한 write.php
2. 글쓰기 기능을 위한 write_ok.php
3. 비밀글에 접근하기 위한 ck_read.php
1. 글쓰기 화면 구현
코드는 다음과 같습니다. 게시판 화면을 구현했을때와 비슷합니다. 기존의 내용을 복사 붙여넣기 하고 다른 부분만 수정해주시면 될 거라고 생각합니다.
<?php include "./config.php"; include "./db/db_con.php"; include "./login_check.php"; ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width" initial-scale="1"> <!-- 스타일 시트 참조 / css폴더의 bootstrap.css 참조 --> <title>PHP 게시판 웹 사이트</title> <link rel="stylesheet" href="css/bootstrap.css"> <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="./js/jquery-1.10.2.js"></script> <script src="./js/login.js"></script> </head> <body> <!-- 표준 네비게이션 바 (화면 상단에 위치, 화면에 의존하여 확대 및 축소) --> <nav class="navbar navbar-default"> <div class="navbar-header"> <!-- Collapse : 제목을 클릭하면 해당내용이 펼쳐지고 다른내용은 접히는 특수 효과 --> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="main.php">PHP 게시판 웹 사이트</a> </div> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li class="active"><a href="main.php">메인</a></li> <li><a href="list.php">게시판</a></li> </ul> <?php if(!$userid){ ?> <ul class="nav navbar-nav navbar-right"> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">접속하기<span class="caret"></span></a> <ul class="dropdown-menu"> <li class="active"><a href="login.php">로그인</a></li> <li><a href="join.php">회원가입</a></li> </ul> </li> </ul> <?php }else{ $logged = $username."(".$userid.")"; ?> <ul class="nav navbar-nav navbar-right"> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><b><?=$logged ?></b>님의 회원관리<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="logout.php">로그아웃</a></li> </ul> </li> </ul> <?php } ?> </div> </nav> <div class="container"> <div id="board_write"> <form action="write_ok.php" method="post"> <table class="table table-striped" style="text-align: center; border: 1px solid #ddddda"> <thead> <tr> <th colspan="2" style="background-color: #eeeeee; text-align: center;"><h3>게시판 글쓰기</h3></th> </tr> </thead> <tbody> <tr> <td><span class="pull-left"> 아이디 : <b><?=$userid?></b></span></td> </tr> <tr> <td><input type="text" class="form-control" placeholder="글 제목" name="title" id="utitle" required></td> </tr> <tr> <td><input type="password" class="form-control" placeholder="글 비밀번호" name="pw" id="upw" style="width: 150px;"></td> </tr> <tr> <td><textarea class="form-control" placeholder="글 내용" name="content" id="ucontent" style="height: 350px" required></textarea></td> </tr> </tbody> </table> <input type="checkbox" value="1" name="lockpost">비밀글<br><br> <button type="submit" class="btn btn-primary">글쓰기</button> </form> </div> </div> </body> </html>
몇가지 코드 부분만 설명하고 넘어가도록 하겠습니다.
<?php include "./config.php"; include "./db/db_con.php"; include "./login_check.php"; ?>
위의 코드에서 login_check.php를 참조하는 이유는 로그인이 되지 않았을때는 게시글을 읽을 수 없게끔 하기 위해서입니다. 즉 회원만 글을 읽을 수 있습니다.
login_check.php의 내용은 다음과 같습니다. (수정된 부분)
<!-- 로그인 체크 --> <?php if(!$userid && !$username) { echo(" <script> alert('로그인 후 이용해 주세요! '); location.href='login.php'; // login.php </script> "); } ?>
config.php를 통한 세션관리 코드를 통해 다음과 같이
<tr> <td><span class="pull-left"> 아이디 : <b><?=$userid?></b></span></td> </tr>
로그인을 해서 세션을 가지고 있는 상태이므로 작성자 아이디를 다음과 같이 설정할 수 있습니다.
마지막으로 다음 코드는 다음에 실습할 비밀 글 작성을 위해 만든 것 입니다.
<input type="checkbox" value="1" name="lockpost">비밀글<br><br>
체크박스를 만들어서 체크하면 value 값은 1이 되어서 DB의 lock_post에 1이 저장 되게끔 설정하는 역할을 합니다.
체크를 하지 않는다면 lock_post 값은 0이 되게끔 설정해줍니다.
다음은 글쓰기 화면을 구현한 결과입니다.
2. 글쓰기 기능 구현
<?php include "./config.php"; include "./db/db_con.php"; $name = $userid; $date = date('Y-m-d'); $userpw = password_hash($_POST['pw'], PASSWORD_DEFAULT); $title = $_POST['title']; $content = $_POST['content']; mq("INSERT board SET name = '".$name."', pw = '".$userpw."', title = '".$title."', content = '".$content."', date ='".$date."' "); ?> <script> alert("글쓰기 완료되었습니다."); location.href = 'list.php'; </script>
$name에는 세션으로 저장된 아이디 값을, $date엔 date 함수를 통해 연-월-일 양식으로 저장되게끔 선언합니다.
$userpw에는 글 비밀번호가 저장되는데 이전 실습에서 나왔던 password_hash() 함수를 통해 입력받은 패스워드를 해쉬값으로 암호화 합니다. 좀 더 이해가 필요하시다면 이전 글을 참고하시면 됩니다!
https://transferhwang.tistory.com/48
$title과 $content에는 Form 태그 보낸 정보를 post 방식으로 받아와 저장합니다. 글쓰기가 완료되면 안내창을 띄우고 location.href 를 통해 게시판 화면으로 다시 돌아갑니다.
실습 결과는 여러분들이 확인해보시길 바랍니다! 다음 시간에는 추가로 비밀 글 기능 구현을 위한 ck_read.php를 구현해보겠습니다. 부족한 글 봐주셔서 감사합니다 :)
※ 모르는 사항이나 오류 발견하시면 언제든 댓글 남겨주세요
PHP 게시판 만들기 시리즈 👇
'프로그래밍 > PHP' 카테고리의 다른 글
[PHP] 게시판 만들기 - 읽기 기능 구현 (2) 2020.02.26 [PHP] 게시판 만들기 - 글쓰기 기능 구현 ② (8) 2020.02.13 [PHP] 게시판 만들기 - 게시판 화면 구현 ② (+페이징) (0) 2020.02.08 [PHP] 게시판 만들기 - 게시판 화면 구현 ① (0) 2020.02.04 [PHP] 게시판 만들기 - 메인화면, 로그아웃 구현 (3) 2020.01.29