답변 2개
자동등록방지 확인을 입력 후 제출하기 전에
AJAX를 통해 별도의 검증 프로세스를 추가하는 방법이여야겠습니다.
스크랩할 과제이다 싶어 정리해 봅니다. 피드백 주세요.
1. bbs/ajax_captcha_check.php (신규 생성)
- 이 파일은 자동등록방지 값을 미리 검증하는 역할
include_once('./_common.php');
session_start();
$captcha = isset($_POST['captcha']) ? trim($_POST['captcha']) : '';
if (!$captcha) {
echo json_encode(['status' => 'error', 'message' => '자동등록방지 값을 입력하세요.']);
exit;
}
if ($captcha !== $_SESSION['ss_captcha']) {
echo json_encode(['status' => 'error', 'message' => '자동등록방지 값이 틀렸습니다.']);
exit;
}
// 성공 응답
echo json_encode(['status' => 'success']);
exit;
?>
2. bbs/write.skin.php 수정
- 자동등록방지 입력 후 미리 검증하는 기능을 추가
" target="_blank" rel="noopener noreferrer">https://code.jquery.com/jquery-3.6.0.min.js">
$(document).ready(function() {
$("#captcha_check_btn").click(function() {
var captcha = $("#captcha").val();
if (captcha === "") {
alert("자동등록방지를 입력하세요.");
return false;
}
$.ajax({
type: "POST",
url: "ajax_captcha_check.php",
data: { captcha: captcha },
dataType: "json",
success: function(response) {
if (response.status === "success") {
alert("자동등록방지 확인 완료!");
$("#captcha").prop("readonly", true);
$("#captcha_check_btn").hide();
} else {
alert(response.message);
$("#captcha").val("").focus();
}
},
error: function() {
alert("서버 오류가 발생했습니다.");
}
});
});
});
3. 백엔드 검증 로직 수정 (bbs/write_update.php)
- 기존 자동등록방지 검증을 AJAX에서 미리 수행하도록 하고,
서버에서는 AJAX 검증을 통과한 경우에만 처리하도록 변경
session_start();
// 기존 자동등록방지 검증 제거 // if ($_POST['captcha'] !== $_SESSION['ss_captcha']) { // alert('자동등록방지 코드가 맞지 않습니다.'); // }
if (!isset($_SESSION['captcha_verified']) || $_SESSION['captcha_verified'] !== true) { alert('자동등록방지를 확인해주세요.'); }
// 게시글 작성 로직 실행 unset($_SESSION['captcha_verified']); // 성공 후 세션 초기화
// 나머지 기존 코드 유지... ?>
답변에 대한 댓글 2개
백엔드 검증 로직은 추가(수정)하여 커스텀하시고
해당 스킨의 write_update.php를 커스텀하셔야겠지요~
. . .
저의 방안을 이해하신 것으로 보이며,
이미 스킨 파일 위치나 필요한 수정 사항에 대해 충분히 파악하신 것으로 보입니다만~
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
현재 제가 나리야를 사용하고 있습니다.
1. bbs/ajax_captcha_check.php => 신규 생성을 해서 넣었습니다.
2. bbs/write.skin.php 수정 => 저는 이 폴더 속에 write.skin.php 파일이 없습니다.
3. bbs/write_update.php => 이 파일 안내 수정하라는 코드가 없습니다.
게시판
/skin/board/BS-Basic-List/write.skin.php 안에 아래의 코드가 있습니다.
<?php if ($captcha_html) { //자동등록방지 ?>
<li class="list-group-item">
<div class="form-group row mb-0">
<label class="col-md-2 col-form-label">자동등록방지</label>
<div class="col-md-10 f-small">
<?php echo $captcha_html; ?>
</div>
</div>
</li>
<?php } ?>
감사합니다.