PHP 게시판 소스코드 - PHP gesipan soseukodeu

세션값을 이용, DB 정보 불러오기, 로그인 체크 기능을 위해서 다음과 같이 참조 코드를 작성해줍니다. 로그인 체크를 하는 이유는 회원가입한 회원들만이 글을 읽을 수 있게끔 권한을 부여하기 위해서입니다.

	<!-- 목록, 수정, 삭제 -->
				<a href="list.php" class="btn btn-primary">목록</a>
				<?php 
					if($userid==$board['name']){
				?>
						<a href="update.php?idx=<?=$board['idx']?>" class="btn btn-primary">수정</a>
						<a href="delete.php?idx=<?=$board['idx']?>" class="btn btn-primary">삭제</a>
				<?php } ?>
			</div>

다음 코드는 현재 세션아이디와 게시글을 작성한 아이디를 비교하여 일치할 때만 수정, 삭제를 하게끔 권한을 부여하는 코드입니다. 즉 자신이 쓴 글만 수정, 삭제 가능하도록 구현한 것입니다. 이해를 돕기 위해서 다음 결과를 참고하시길 바랍니다.

 

PHP 게시판 소스코드 - PHP gesipan soseukodeu
test로 로그인 후 test의 글 읽기
PHP 게시판 소스코드 - PHP gesipan soseukodeu
test로 로그인 후 gildong의 글 읽기

 

2. DB에서 게시글 정보 가져오기

<?php
	include_once "./config.php";
	include "./db/db_con.php";
	include_once "./login_check.php";
	
	$bno = $_GET['idx']; // $bno에 idx값을 받아와 넣음 
    /* 받아온 idx값을 선택해서 게시글 정보 가져오기 */
	$sql = mq("select 
				 * 
			   from 
				 board 
			   where 
				 idx='".$bno."'
			"); 
	$board = $sql->fetch_array();
?>

get방식으로 게시글의 번호를 받아 이를 만족하는 DB의 정보들을 가져오도록 구현했습니다.

 

★ 조회수 기능 구현

위의 코드에 다음과 같이 코드를 추가해줍니다. 

<?php
	include_once "./config.php";
	include "./db/db_con.php";
	include_once "./login_check.php";
	
	$bno = $_GET['idx']; // $bno에 idx값을 받아와 넣음 
	/* 조회수 올리기  */
	$hit = mysqli_fetch_array(mq("select * from board where idx ='".$bno."'"));
	$hit = $hit['hit'] + 1;
	mq("update 
		 board 
	   set 
		 hit = '".$hit."' 
	   where 
		 idx = '".$bno."'
	");
	/* 조회수 올리기 끝 */
	
	/* 받아온 idx값을 선택해서 게시글 정보 가져오기 */
	$sql = mq("select 
				 * 
			   from 
				 board 
			   where 
				 idx='".$bno."'
			"); 
	$board = $sql->fetch_array();
?>

해당 게시글이 읽힐 때 마다 조회수를 저장하는 변수 $hit이 값을 1 증가시키고, update 문을 통해서 DB의 조회수를 저장하는 속성인 hit에 $hit의 값을 갱신시켜주는 코드입니다. 

 

PHP 게시판 소스코드 - PHP gesipan soseukodeu
글을 읽기 전
PHP 게시판 소스코드 - PHP gesipan soseukodeu
글을 읽은 후

위의 실습 결과를 확인해 본 결과 입니다. 글을 읽기 전에는 조회수가 2였는데 읽은 후 3으로 증가한 것을 확인할 수 있었습니다.

 

 

이렇게 작성된 게시글을 읽을 수 있도록 기능을 구현해보고 추가로 조회수도 증가하도록 실습을 진행해봤습니다. 이번 실습은 꽤 간단했기 때문에 이해하는데 어려움이 없으실거라고 생각합니다. 혹시 잘못된 부분이나 모르는 부분이 있으시면 언제든 질문해주시길 바랍니다. 따라와주셔서 감사합니다.


여러 사용자의 요청으로 강의에서 다룬 "게시판 소스"를 공개합니다.
현재 진행 중인 강의 소스는 공개하지 않고, 완료된 강의 소스만 공개할 예정입니다.

단, 다음에 주의해주세요.
http://zooo.kr 에서 제작한 게시판 소스(강의용)를 교육용으로 한해 사용해주세요.
다른 목적으로 사용할 경우 http://zooo.kr 을 통해 동의를 받아야 합니다.

이 소스는 교육용을 제작되었고, 버그가 있을 수 있습니다.
그 점 양해부탁드립니다.

파일은 압축파일 형태입니다. 압축을 푸신 후 지정된 폴더 위치로, 파일을 이동시켜야 합니다.
그리고, 다음은 직접 추가해야 하는 내용입니다.

1.  /application/config/database.php 에서, hostname, username, password, database 등을 입력하셔야 합니다.
2.  /application/config/config.php 에서 $config['base_url'] 및 필요한 내용을 입력하셔야 합니다.
3.  최상위 경로에서 .htaccss 파일 및 "/application/config/routes.php"을 수정할 필요가 있을 수 있습니다.
    (접속시 항상 index.php 파일을 통해 작동됩니다. index.php를 생략하고자 할 때 .htaccess를 편집하셔야 합니다.
     해당 내용은 http://zooo.kr 동영상 강의의 처음 몇 강의을 참조하세요.)
4.  압축을 푸시면, query.sql 파일이 있습니다.
    먼저, Mysql에서 사용하실 데이터베이스를 추가하시고, 해당 데이터베이스에 query.sql을 이용하여 테이블을 추가해주십시오.
    (파일 내용을 MysqlFront와 같은 유틸리티에서 실행하실 수 있습니다.)

[이 소스는 CodeIgniter 2.2.0 버전에서 설치되었습니다.]

form 태그로 작성한 내용들을 write_action.php로 넘겨서 처리합니다.  write_action.php에서는 받은 데이터를 DB에 저장합니다. 이 게시판은 그냥 기능만 되도록해서 모든 form method 을 GET으로 해놨기 때문에 POST로 바꾸시는걸 권장합니다 ~-~





write_action.php >>> 


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

 <?php

                $connect = mysqli_connect("localhost""""""") or die("fail");

                

                $id = $_GET[name];                      //Writer

                $pw = $_GET[pw];                        //Password

                $title = $_GET[title];                  //Title

                $content = $_GET[content];              //Content

                $date = date('Y-m-d H:i:s');            //Date

 

                $URL = './index.php';                   //return URL

 

 

                $query = "insert into board (number,title, content, date, hit, id, password) 

                        values(null,'$title', '$content', '$date',0, '$id', '$pw')";

 

 

                $result = $connect->query($query);

                if($result){

?>                  <script>

                        alert("<?php echo "글이 등록되었습니다."?>");

                        location.replace("<?php echo $URL?>");

                    </script>

<?php

                }

                else{

                        echo "FAIL";

                }

 

                mysqli_close($connect);

?>

 

Colored by Color Scripter

cs



모두 GET방식으로 전달하였고, DB에 number, title, content, date, hit, id, password를 insert합니다. 숫자는 자동으로 올라가기 때문에 null 값을 삽입하면 됩니다.