반응형
① 문의글 확인 권한
문의글은 기본적으로 자신이 작성한 글만 확인이 가능하게 구현할 것이다. 회원의 경우 세션 아이디를 확인해서 글의 작성자인지 확인하면 되지만, 비회원의 경우 글을 작성할 때 입력했던 비밀번호를 다시 입력해서 검증할 수밖에 없다.
하지만 자바스크립트와 php의 실행 순서 차이 때문에 prompt를 띄우기가 어려워서, 비밀번호를 인증하는 페이지로 넘겨준 후, 인증 페이지에서 인증에 통과하면 qna_read.php로 넘기는 로직을 구현해주었다.
[qna_check.php]
qna_board.php에서 qna_read.php로 바로 연결되던 부분을 qna_check.php로 바꿔주었다.
1) admin이면 바로 qna_read.php로 넘긴다.
2) 회원이자 글의 작성자면 qna_read.php로 넘긴다.
3) 비회원이면 비밀번호 입력받는 창을 띄워서 비밀번호가 일치하면 qna_read.php로 넘긴다.
4) 그 외는 글을 볼 수 없다.
위의 4가지 로직을 구현해야 하는데, 우선 1번과 2번을 구현해보았다.
<?php
session_start();
if(isset($_SESSION['id'])) {
$login_user = $_SESSION['id'];
} else{
$login_user = "anonymous";
}
$conn = mysqli_connect('localhost', 'ID', 'PW', 'DBname');
if(isset($_GET['id'])){
$id = $_GET['id'];
$sql = "SELECT * FROM qna where id = {$id}";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
$username = $row['username'];
mysqli_close($conn);
}
if ($login_user == "admin" || $login_user == $username){
echo "<script>window.location.href='qna_read.php?id=$id';</script>";
}
?>
세션 아이디로 로그인된 사용자 아이디를 가져와서, 아이디가 admin이거나 글의 작성자면 qna_read.php로 연결한다.
test 계정으로 들어가 보니, 1번 글은 확인할 수 있었지만, 2번 비회원이 작성한 글은 확인할 수 없었다.
admin 계정으로 들어가니, 1번 글과 2번 글 모두 확인이 가능했다.
3번을 구현하기 위해 비밀번호를 입력받을 input을 추가하고, post로 넘겨주었다.
<div class = "posting">
<form method = "post">
<input id = "anonypw" name = "anonypw" type = "text" placeholder="Password" />
<input type = "submit" name = "pw_check" value = "🔍" id = "search_btn" />
</form>
<?php
if(array_key_exists('pw_check', $_POST)){
$pw = $_POST['anonypw'];
if(isset($_GET['id'])){
$id = $_GET['id'];
$conn = mysqli_connect('localhost', 'ID', 'PW', 'DBname');
$sql = "SELECT * FROM qna where id = {$id}";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
$password = $row['password'];
mysqli_close($conn);
}
if($pw == $password){
echo "<script>window.location.href='qna_read.php?id=$id';</script>";
}
}
?>
</div>
비회원으로 들어가니 비밀번호 창이 뜨고, 비밀번호를 맞게 입력하니 게시글도 확인할 수 있었다.
반대로 비밀번호가 틀리면 게시글을 확인할 수 없었다.
반응형
'WEB HACKING > 웹 해킹[실습]' 카테고리의 다른 글
Oracle Cloud : Free Tier 등록 & 접속 (0) | 2022.01.27 |
---|---|
Php로 웹 개발하기 : 문의 게시판(5) (0) | 2021.12.31 |
Php로 웹 개발하기 : 문의 게시판(3) (0) | 2021.12.23 |
Php로 웹 개발하기 : 문의 게시판(2) (0) | 2021.12.20 |
Php로 웹 개발하기 : 문의 게시판(1) (0) | 2021.12.15 |
댓글