자동등록방지 만 다시 입력하는 방법이 있나요?

자동등록방지 만 다시 입력하는 방법이 있나요?

QA

자동등록방지 만 다시 입력하는 방법이 있나요?

본문

자동등록방지가 틀린 경우 

현재 게시판 글쓰기에서 필드 값을 처음부터 다시 입력을 해야합니다.

 

자동등록방지가 틀린 경우

자동등록방지 만 다시 입력하는 방법이 있나요?

감사합니다.

이 질문에 댓글 쓰기 :

답변 2

자동등록방지 확인을 입력 후 제출하기 전에

AJAX를 통해 별도의 검증 프로세스를 추가하는 방법이여야겠습니다.

스크랩할 과제이다 싶어 정리해 봅니다. 피드백 주세요.

1. bbs/ajax_captcha_check.php (신규 생성)

- 이 파일은 자동등록방지 값을 미리 검증하는 역할

<?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 수정

- 자동등록방지 입력 후 미리 검증하는 기능을 추가

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

 

<script>

$(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("서버 오류가 발생했습니다.");

            }

        });

    });

});

</script>

 

<!-- 기존 자동등록방지 필드 -->

<input type="text" name="captcha" id="captcha" required>

<button type="button" id="captcha_check_btn">자동등록방지 확인</button>

 

3. 백엔드 검증 로직 수정 (bbs/write_update.php)

- 기존 자동등록방지 검증을 AJAX에서 미리 수행하도록 하고,

  서버에서는 AJAX 검증을 통과한 경우에만 처리하도록 변경

<?php
include_once('./_common.php');

session_start();

// 기존 자동등록방지 검증 제거
// if ($_POST['captcha'] !== $_SESSION['ss_captcha']) {
//     alert('자동등록방지 코드가 맞지 않습니다.');
// }

if (!isset($_SESSION['captcha_verified']) || $_SESSION['captcha_verified'] !== true) {
    alert('자동등록방지를 확인해주세요.');
}

// 게시글 작성 로직 실행
unset($_SESSION['captcha_verified']); // 성공 후 세션 초기화

// 나머지 기존 코드 유지...
?>

답변 감사합니다.
현재 제가 나리야를 사용하고 있습니다.

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 } ?>


감사합니다.

질문 개요에 특정이 없으셨으니,.
백엔드 검증 로직은 추가(수정)하여 커스텀하시고
해당 스킨의 write_update.php를 커스텀하셔야겠지요~
. . .
저의 방안을 이해하신 것으로 보이며,
이미 스킨 파일 위치나 필요한 수정 사항에 대해 충분히 파악하신 것으로 보입니다만~

자동등록방지 체크처리를 하는 부분을 전송하기전에 ajax로 자동등록방지 체크하는 페이지를 별도 만들어서 체크하고 적용하도록 처리하시면 효율적으로 가능하지 않을까 생각됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 175
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT