답변 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를 커스텀하셔야겠지요~
. . .
저의 방안을 이해하신 것으로 보이며,
이미 스킨 파일 위치나 필요한 수정 사항에 대해 충분히 파악하신 것으로 보입니다만~
댓글을 작성하려면 로그인이 필요합니다.
자동등록방지 체크처리를 하는 부분을 전송하기전에 ajax로 자동등록방지 체크하는 페이지를 별도 만들어서 체크하고 적용하도록 처리하시면 효율적으로 가능하지 않을까 생각됩니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
현재 제가 나리야를 사용하고 있습니다.
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 } ?>
감사합니다.