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

Php로 웹 개발하기 : 게시판(6) - Create

by madevth 2021. 11. 18.
반응형

게시판 만들기(4): [모의해킹_실습] - Php로 웹 개발하기 : 게시판 만들기(4)에서 글을 작성할 수 있는 기능을 만들었는데, 임시로 사용자는 'test', 날짜와 시간은 2021-00-00, 00:00으로 삽입해주었었다. 이번 포스팅에서는 글을 생성할 때, 사용자에는 현재 로그인된 아이디를 넣고 글을 읽는 페이지에서 자신이 작성한 글을 읽는다면 삭제 버튼을 표시해볼 것이다. 추가로 날짜와 시간도 현재 날짜와 시간으로 바꿔보자.

 

① 로그인 아이디 가져오기

메인 페이지에서 세션을 검증하기 위해 session_start()를 사용했었다.

session_start();
if($_SESSION['id']) $username = $_SESSION['id'];
else $username = "anonymous";

board_create.php 파일에서 session_start()로 세션 아이디가 존재하면 username에 넣어주고, 존재하지 않는다면 익명의 사용자로 넣어준다.

 

admin으로 로그인한 후 글을 작성해보자.

 자동으로 User ID admin으로 들어간 것을 확인할 수 있다.

 

② 삭제 버튼 활성화

현재 admin이 쓴 글을 클릭해보면 다음과 같은 화면을 볼 수 있다.

기존의 read.php 파일에서 글 작성자를 $username으로 받아오고 세션 ID와 일치하면 삭제 버튼을 만들어준다.

<?php
    if(isset($_GET['id'])){
        $id = $_GET['id'];
        $sql = "SELECT * FROM board where id = {$id}";
        $result = mysqli_query($conn, $sql);

        $row = mysqli_fetch_array($result);
        $username = $row['username'];
        $title = $row['title'];
        $content = $row['content'];
        mysqli_close($conn);
    }
?>
<div class = "posting_title"><?=$title?></div>
<div class = "posting_contents"><?=$content?></div>
<button class = "writeBtn" onclick = "location.href = 'board.php'">게시판</button>
<?php
    session_start();
    if ($_SESSION['id'] == $username) {
        echo "<button class = 'writeBtn'>삭제</button>";
    }
?>

admim 글을 들어갔을 때와 hanus91041 글에 들어갔을 때 삭제 버튼의 활성화 차이를 확인할 수 있다.

 

③ 날짜와 시간 넣기

이제 DB에 현재 날짜와 시간을 넣어보자.

날짜는 getdate() 함수를 이용하면 쉽게 구할 수 있다.

<?php
    $date = getdate();
    echo $date["year"];
    echo $date["mon"];
    echo $date["mday"];
?>

시간도 출력해보자.

<?php
    date_default_timezone_set('Asia/Seoul');
    $date = getdate();
    echo $date["year"]."-".$date["mon"]."-".$date["mday"],"<br/>";
    echo $date["hours"].":".$date["minutes"];
?>

시간이 미국으로 되어있어서 timezone을 설정해주는 코드를 추가해주었다.

 

이제 board_create.php의 $date와 $time을 현재 날짜와 시간으로 넣어주자.

session_start();
$title = $_POST['create_title'];
$content = $_POST['create_body'];
if($_SESSION['id']) $username = $_SESSION['id'];
else $username = "anonymous";

date_default_timezone_set('Asia/Seoul');
$current_date = getdate();
$date = $current_date["year"]."-".$current_date["mon"]."-".$current_date["mday"];
$time = $current_date["hours"].":".$current_date["minutes"];

글을 작성해보자.

date와 time이 현재 시간으로 잘 들어간 것을 확인할 수 있다.

반응형

댓글