추천버튼 비회원이 클릭시 '로그인후이용' 얼럿 띄우는법 (질문,칼채택!)

추천버튼 비회원이 클릭시 '로그인후이용' 얼럿 띄우는법 (질문,칼채택!)

QA

추천버튼 비회원이 클릭시 '로그인후이용' 얼럿 띄우는법 (질문,칼채택!)

본문

추천버튼 비회원이 클릭시 '로그인후이용' 얼럿 띄우는법 (질문,칼채택!)

 

아시는분 도움 부탁드립니다!!

이 질문에 댓글 쓰기 :

답변 4

안녕하세요...

 님 

 

사용하시는 스킨에서 아래 코드를 찾아 수정 해주시면 원하시는 결과를 얻을 수 있습니다.

사용하시는 스킨에서 view.skin.php 파일을 열어 주세요

 

아무것도 수정하지 않았다면 112번 라인이구요

수정 했다면 아래 코드를 찾아주세요

 



<!--  추천 비추천 시작 { -->
<?php if ( $good_href || $nogood_href) { ?>
<div id="bo_v_act">
    <?php if ($good_href) { ?>
    <span class="bo_v_act_gng">
        <a href="<?php echo $good_href.'&'.$qstr ?>" id="good_button" class="bo_v_good"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sound_only">추천</span><strong><?php echo number_format($view['wr_good']) ?></strong></a>
        <b id="bo_v_act_good"></b>
    </span>
    <?php } ?>
    <?php if ($nogood_href) { ?>
    <span class="bo_v_act_gng">
        <a href="<?php echo $nogood_href.'&'.$qstr ?>" id="nogood_button" class="bo_v_nogood"><i class="fa fa-thumbs-o-down" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></strong></a>
        <b id="bo_v_act_nogood"></b>
    </span>
    <?php } ?>
</div>
<?php } else {
    if($board['bo_use_good'] || $board['bo_use_nogood']) {
?>
<div id="bo_v_act">
    <?php if($board['bo_use_good']) { ?><span class="bo_v_good"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sound_only">추천</span><strong><?php echo number_format($view['wr_good']) ?></strong></span><?php } ?>
    <?php if($board['bo_use_nogood']) { ?><span class="bo_v_nogood"><i class="fa fa-thumbs-o-down" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></strong></span><?php } ?>
</div>
<?php
    }
}
?>
<!-- }  추천 비추천 끝 -->


 

여기에서 주목해야 할 부분이 아래 코드입니다.


<div id="bo_v_act">
    <?php if($board['bo_use_good']) { ?><span class="bo_v_good"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sound_only">추천</span><strong><?php echo number_format($view['wr_good']) ?></strong></span><?php } ?>
    <?php if($board['bo_use_nogood']) { ?><span class="bo_v_nogood"><i class="fa fa-thumbs-o-down" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></strong></span><?php } ?>
</div>

 

이 부분을 아래 코드로 변경 해주세요 (해당 부분만 통으로 교체 해주세요

 


<div id="bo_v_act">
            <?php if($board['bo_use_good']) { ?>
                <span class="bo_v_act_gng">
                <a href="<?php echo G5_BBS_URL.'/good.php?bo_table='.$board['bo_table'].'&wr_id='.$view['wr_id'].'&good=good' ?>" id="good_button" class="bo_v_good"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sound_only">추천</span><strong><?php echo number_format($view['wr_good']) ?></strong></a>
                <b id="bo_v_act_good"></b>
            </span>
 
                <?php } ?>
            <?php if($board['bo_use_nogood']) { ?>
                <span class="bo_v_nogood">
                    <a href="<?php echo G5_BBS_URL.'/good.php?bo_table='.$board['bo_table'].'&wr_id='.$view['wr_id'].'&good=nogood' ?>" id="nogood_button" class="bo_v_nogood"><i class="fa fa-thumbs-o-down" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></strong></a>
                    <b id="bo_v_act_nogood"></b>
                </span>
            <?php } ?>
        </div>

 

그러면 원하시는 데로 알림창이 뜨게 됩니다.

 

978180634_1740704075.8682.gif

 

클라이언트와 서버 모두에서 로그인 상태를 확인하는 이중 검증을 통해,

비회원 사용자가 추천 버튼을 클릭했을 때 "로그인후 이용"이라는 메시지를 팝업.

 

*클라이언트 사이드 검사 (JavaScript)

추천 버튼이 실제로 출력되는 HTML 마크업이 있는 파일을 확인하여 그곳에 아래 코드 추가.

- 그누의 예로, bbs/view.php 또는 해당 스킨 폴더 내의 view.skin.php 파일에서

  추천 버튼이 출력되는 부분에 아래 코드를 삽입.

<!-- 추천 버튼 예시 -->
<button id="recommendBtn" onclick="return checkRecommend();">추천</button>

<script>
function checkRecommend() {
    // 서버에서 전달한 로그인 상태 변수 (PHP로부터 전달)
    var isMember = <?= $is_member ? 'true' : 'false' ?>;
    
    if (!isMember) {
        alert("로그인후 이용");
        return false; // 추천 기능 실행 중단
    }
    // 로그인 상태라면 추천 기능을 계속 진행(예: Ajax 호출 등)
    return true;
}
</script>

- Ajax 요청 예시:

로그인한 상태에서 추천 버튼을 클릭하면, Ajax를 통해 서버에 추천 요청을 전송

// Ajax 예시 (jQuery 사용)
$("#recommendBtn").click(function(e){
    e.preventDefault();
    $.ajax({
        url: "recommend.php",
        method: "POST",
        data: { item_id: 123 },
        dataType: "json",
        success: function(response) {
            if(response.error && response.error == "not_logged_in") {
                alert("로그인후 이용");
            } else {
                // 정상 처리 시 추천수 업데이트 등 추가 작업 수행
            }
        }
    });
});

 

*서버 사이드 검사와 Ajax 처리

그누보드라면, bbs/ajax.mb_recommend.php를 수정한 예시

<?php
include_once("./_common.php");
include_once(G5_LIB_PATH."/register.lib.php");

// 로그인 여부 체크
if (!isset($member['mb_id']) || !$member['mb_id']) {
    header('Content-Type: application/json');
    echo json_encode(array("error" => "not_logged_in"));
    exit;
}

$mb_recommend = isset($_POST["reg_mb_recommend"]) ? trim($_POST["reg_mb_recommend"]) : '';

if ($msg = valid_mb_id($mb_recommend)) {
    // JSON 형식으로 에러 응답을 반환하는 것이 좋습니다.
    header('Content-Type: application/json');
    echo json_encode(array("error" => "추천인의 아이디는 영문자, 숫자, _ 만 입력하세요."));
    exit;
}
if (!($msg = exist_mb_id($mb_recommend))) {
    header('Content-Type: application/json');
    echo json_encode(array("error" => "입력하신 추천인은 존재하지 않는 아이디 입니다."));
    exit;
}

// 여기서 추천 기능에 대한 추가 처리(예: DB 업데이트 등)를 구현합니다.

// 성공 처리 후 JSON 응답 반환
header('Content-Type: application/json');
echo json_encode(array("success" => "추천 완료"));
exit;
?>

소스를 확인해 보니 기본적으로 추천누르면 회원로그인후 로그인 페이지로 이동되도록 구현되어 있습니다.
만약 안된다면 기능적인 부분의 문제가 있는게 아닐까 싶은데 

 

/bbs/view.php 파일에

 

$board['bo_use_good'] 해당 링크에

./good.php 파일로 링크 적용이 되어야 하는데 회원이 아닌경우는 그냥 빈 링크로 적용되어져 있는데

 

if($is_member) 라는 회원 여부를 체크해서 회원이 아닌경우 비회원인 경우 alert('로그인후이용'); 하라는 메세지로 직접 링크를 적용해 처리해 주시면 될듯 싶습니다.

 

view스킨 상단 php부분에 넣으세요

if(!$is_member) $good_href ='asdfg';

 

하단 자바스크립트에서  $("#good_button, #nogood_button").click(function() {<==이것을 찾아서

다음 코드를 추가 하세요

        if(!g5_is_member)    {alert('로그인 후 이용'); return false;} //<====추가


         excute_good(this.href, $(this), $tx); <==이 코드 바로 위에 추가 합니다

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

회원로그인

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