검색 금지어 설정 코드 한번만 봐주실수있나요?

검색 금지어 설정 코드 한번만 봐주실수있나요?

QA

검색 금지어 설정 코드 한번만 봐주실수있나요?

본문

<form name="fsearchbox" method="get" action="<?php echo G5_BBS_URL ?>/search.php" onsubmit="return fsearchbox_submit(this);">
                    <input type="hidden" name="sfl" value="wr_subject||wr_content">
                    <input type="hidden" name="sop" value="and">
                    <label for="sch_stx" class="sound_only">검색어 필수</label>
                    <input type="text" name="stx" id="sch_stx" maxlength="20" placeholder="검색어를 입력해주세요">
                    <button type="submit" id="sch_submit" value="검색"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">검색</span></button>

                </form>
                <?
                    $filter = explode(",", trim($config['cf_filter']));
                    for ($i=0; $i<count($filter); $i++) {
                        $str = $filter[$i];
                        ?>
                <input type="hidden" id="test01" value="<?php echo $str?>">

                <script>
                    function fsearchbox_submit(f) {
                        var test = document.getElementById('test01').value;
                        var search = document.getElementById('sch_stx').value;
                        alert(test);
                        alert(search);
                        if (f.stx.value.length < 2) {
                            alert("검색어는 두글자 이상 입력하십시오.");
                            f.stx.select();
                            f.stx.focus();
                            return false;
                        }

                        // 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
                        var cnt = 0;
                        for (var i = 0; i < f.stx.value.length; i++) {
                            if (f.stx.value.charAt(i) == ' ')
                                cnt++;
                        }

                        if (cnt > 1) {
                            alert("빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.");
                            f.stx.select();
                            f.stx.focus();
                            return false;
                        }
                        if (test == search) {
                            alert(search + '는 검색불가능한 단어입니다.');
                            return false;
                        }
                        return true;
                    }

                </script>
                <?
                    }
                    ?>

 

 

 

금지어를 불러와서 검색어가 그중 포함 되어있으면 검색불가능하다고 알려주는 경고창을 띄울려는데 이게 배열이 첫번째거만 먹히네요....

어딜 어떻게 고쳐야하나요

이 질문에 댓글 쓰기 :

답변 1

id는..고유값인데 배열을 넣으니까 ???.....소스가..

 

점심때도 봤던 비슷한 질문 하신거 같아서.....꼭 필요하신 기능이신거 같아

일단은 게시판글쓰기 소스 가져다 간단하게 적용해본 소스입니다.

bbs/ajax.filter.php는 원본 안건드리고 그냥 검색창쪽 있는 소스만 수정했습니다.

 



                <legend>사이트 내 전체검색</legend>
                <form name="fsearchbox" method="get" action="<?php echo G5_BBS_URL ?>/search.php" onsubmit="return fsearchbox_submit(this);">
                <input type="hidden" name="sfl" value="wr_subject||wr_content">
                <input type="hidden" name="sop" value="and">
                <label for="sch_stx" class="sound_only">검색어 필수</label>
                <input type="text" name="stx" id="sch_stx" maxlength="20" placeholder="검색어를 입력해주세요">
                <button type="submit" id="sch_submit" value="검색"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">검색</span></button>
                </form>
                <script>
                function fsearchbox_submit(f)
                {
                    var search = document.getElementById('sch_stx').value;                
                    $.ajax({
                        url: g5_bbs_url+"/ajax.filter.php",
                        type: "POST",
                        data: {
                            "content": search
                        },
                        dataType: "json",
                        async: false,
                        cache: false,
                        success: function(data, textStatus) {
                            content = data.content;
                        }
                    });

                    if (content) {
                        alert("금지단어('"+content+"')가 포함되어있습니다");
                        return false;
                    }
                    
                    if (f.stx.value.length < 2) {
                        alert("검색어는 두글자 이상 입력하십시오.");
                        f.stx.select();
                        f.stx.focus();
                        return false;
                    }
                    // 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
                    var cnt = 0;
                    for (var i=0; i<f.stx.value.length; i++) {
                        if (f.stx.value.charAt(i) == ' ')
                            cnt++;
                    }
                    if (cnt > 1) {
                        alert("빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.");
                        f.stx.select();
                        f.stx.focus();
                        return false;
                    }
                    return true;
                }
                </script>
 
 

 

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

회원로그인

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