목록 페이지에서 글 삭제 버튼을 누르면 개별 글을 삭제하는 API를 만든다.
<?php
header('Content-Type: application/json');
// 로그인 체크
session_start();
if (isset($_SESSION['member_id']) === false){
echo json_encode(array('result' => false));
exit();
}
// 파라미터 체크
$post_id = isset($_POST['post_id']) ? $_POST['post_id'] : null;
if ($post_id == null){
echo json_encode(array('result' => false));
exit();
}
// DB Require
require_once("inc/db.php");
$member_id = $_SESSION['member_id'];
// 글 삭제. 작성자 체크를 위해 writer_id 도 함께 검사.
$result = db_update_delete("delete from tbl_post where post_id = :post_id and member_id = :member_id",
array(
'post_id' => $post_id,
'member_id' => $member_id
)
);
echo json_encode(array('result' => $result));
위 코드를 delete.api.php 파일로 저장한다.
HTTP 헤더에 Content-Type: application/json 을 설정할 경우 브라우저가 응답이 JSON 형식임을 직접적으로 알 수 있게 된다.
header('Content-Type: application/json');
delete.api.php 파일은 모든 응답을 JSON 형식으로 한다고 명시한다.
로그인 체크가 실패했을 경우 {result : false} 형태의 JSON 문자열을 웹 브라우저로 응답한다.
echo json_encode(array('result' => false));
PHP 코드 array('result' => false) 를 JSON 형식으로 변경하고(json_encode) 출력하는(echo) 코드다.
실제로 글을 삭제한다.
$result = db_update_delete("delete from tbl_post where post_id = :post_id and member_id = :member_id",
array(
'post_id' => $post_id,
'member_id' => $member_id
)
);
파라미터는 post_id만 전달되지만 실제로 데이터베이스에 삭제시에는 세션에서 가지고 온 member_id도 함께 조건으로 넣어야 한다. member_id 파라미터 검사가 없다면 로그인한 사용자 아무나 post_id 값만 알고 있다면 다른 사람의 글이라도 삭제할 수 있기 떄문이다. 따라서 본인의 글만 삭제할 수 있도록 조건을 추가한다.
성공 실패 여부를 웹 브라우저에 응답한다.
echo json_encode(array('result' => $result));