추천버튼 비회원이 클릭시 '로그인후이용' 얼럿 띄우는법 (질문,칼채택!)
본문
추천버튼 비회원이 클릭시 '로그인후이용' 얼럿 띄우는법 (질문,칼채택!)
아시는분 도움 부탁드립니다!!
답변 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>
그러면 원하시는 데로 알림창이 뜨게 됩니다.
!-->!-->!-->
클라이언트와 서버 모두에서 로그인 상태를 확인하는 이중 검증을 통해,
비회원 사용자가 추천 버튼을 클릭했을 때 "로그인후 이용"이라는 메시지를 팝업.
*클라이언트 사이드 검사 (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); <==이 코드 바로 위에 추가 합니다