본문 바로가기
WEB HACKING/웹 해킹[실습]

Php로 웹 개발하기 : 문의 게시판(3)

by madevth 2021. 12. 23.
반응형

① 문의글 확인 기능

우선 문의글을 읽을 수 있는 페이지를 만들어야 한다. 이 페이지에서는 문의글을 수정 및 삭제할 수 있으며 관리자의 경우 댓글을 달 수 있다.

[qna_read.php]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="./css/style.css"  rel = "stylesheet"/>
    <title>Read Posting</title>
</head>
<body>
    <div class = "column">
        <div class = "posting">
            <?php
                session_start();
                if(isset($_SESSION['id'])) {
                    $login_user = $_SESSION['id'];
                } else{
                    $login_user = "anonymous";
                }
                if(isset($_GET['id'])){
                    $id = $_GET['id'];
                    $sql = "SELECT * FROM qna where id = {$id}";
                    $result = mysqli_query($conn, $sql);

                    $row = mysqli_fetch_array($result);
                    $title = $row['title'];
                    $content = $row['content'];
                    
                    mysqli_close($conn);
                }
            ?>
            <div class = "posting_title"><?=$title?></div>
            <div class = "posting_contents"><?=$content?></div>
            <div class = "btns">
                <button class = "writeBtn" onclick = "location.href = 'qna_board.php'">문의 게시판</button>
                <?php
                    if ($login_user == "admin") {
                        echo "<button class = 'writeBtn' onclick = \"location.href = 'qna_answer.php?id=$id'\">댓글</button>";
                    }
                    else{
                        echo "<button class = 'writeBtn' onclick = \"location.href = 'qna_update.php?id=$id'\">수정</button>";
                        echo "<button class = 'writeBtn' onclick = \"location.href = 'qna_delete.php?id=$id'\">삭제</button>";
                    }
                ?>
            </div>
        </div>
    </div>
</body>
</html>

게시판 read.php 파일과 똑같지만, 좋아요 같은 기능들을 빼고 사용자를 확인하는 기능을 추가해주었다.

일반 사용자는 왼쪽 화면, 관리자는 오른쪽 화면을 볼 수 있다.

 

 

② 내가 쓴 글만 확인하기

회원에 한해서, 내가 쓴 글만 확인할 수 있는 기능을 만들어보자.

확인을 편하게 하기 위해서, qna 테이블에 username을 추가해주었다.

회원의 경우 login_id가, 아닌 경우에는 NULL이 들어간다.

<div class = "">
    <form method = "post">
        <p>나의 문의</p>
        <input type = "submit" name = "qna_search" value = "🔍" id = "search_btn" />
    </form>
</div>

상단에 나의 문의를 확인할 수 있는 버튼을 만들어준다.

게시판의 검색 기능과 똑같이, 버튼이 눌린 여부를 array_key_exists로 확인해서 기능을 추가해줄 것이다.

if(array_key_exists('qna_search', $_POST)){
    myqna();
}
<?php
    function myqna(){
        session_start();
        if(isset($_SESSION['id'])){
            $username = $_SESSION['id'];
        }
        $conn = mysqli_connect('localhost', 'ID', 'PW', 'DBname');
        $sql = "SELECT * from qna where username = '$username' order by id desc;";
        $result = mysqli_query($conn, $sql);
        if(mysqli_num_rows($result) > 0){
            while($row = mysqli_fetch_array($result)){
                echo "<tr><td>".$row['id']."</td><td><a href = \"read.php/?id=".$row['id']."\">".$row['title']."</a></td></tr>";
            }
        } else{
            echo "<script>alert('존재하지 않습니다.')</script>";
        }
        mysqli_close($conn);
    }
?>

나의 문의를 누르면 위와 같이 자신이 작성한 글만 확인할 수 있다.

 

비회원의 경우 위의 버튼을 아예 띄우지 않기 위해 다음과 같이 수정하였다.

<?php
    session_start();
    if(isset($_SESSION['id'])){
        $username = $_SESSION['id'];
    }else{
        $username="";
    }
    if($username){
        echo "
            <div class = ''>
                <form method = 'post'>
                    <p>나의 문의</p>
                    <input type = 'submit' name = 'qna_search' value = '🔍' id = 'search_btn' />
                </form>
            </div>
        ";
    }
?>

로그아웃 후 비회원으로 들어가면 다음과 같이 버튼이 보이지 않는다.

 

반응형

댓글