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

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

QA

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

답변 4

본문

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

 

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

이 질문에 댓글 쓰기 :

답변 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); <==이 코드 바로 위에 추가 합니다

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 97
© SIRSOFT
현재 페이지 제일 처음으로