팁과노하우

  • 팁과노하우 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 147건 / 6 페이지
    • 47
    • 오래 전
      2025.01.17
  • 오래 전
  • 내가 스크랩 한 게시물은 체크 및 스크랩 총 개수 나타내기
  • 안녕하세요...미니님a 회원입니다.
    게시판 목록을 클릭해서 내용을 보면, 스크랩이라는 기능이 있습니다.이 기능을 통해 본인의 판단하에 자주 혹은 유용한 게시글 등을 스크랩하실 텐데요
    화면상에 총 개수와 내가 스크랩한 게시글을 표기하는 방법입니다.현재는 아시다시피 내가 스크랩했나? 확인할 수 없습니다. 직접 스크랩 버튼을 눌러야만 확인이 가능한 시스템입니다.

    이렇게 번거롭게 확인하는 것 보다 아래 처럼 보여진다면 번거로움이 조금은 줄어들지 않을까요 ?

    사용하시는 게시판 스킨의 view.skin.php 파일을 열어 주세요
    그리고 다음 코드를 찾아주세요 <?php if ($scrap_href) { ?>    <a href="<?php echo $scrap_href;  ?>" class="fl_btns font-B" target="_blank" onclick="win_scrap(this.href); return false;">스크랩</a> <?php } ?> 그리고 이 코드를 통으로 아래 코드로 변경만 하시면 됩니다.         <?php if ($scrap_href) {  $scrap_sql = " select count(*) as cnt from {$g5['scrap_table']} where mb_id = '{$member['mb_id']}' and bo_table = '$bo_table' and wr_id = '{$view['wr_id']}' "; $scrap_row = sql_fetch($scrap_sql);?> <a href="<?php echo $scrap_href;?>"  target="_blank" class="fl_btns font-B" onclick="win_scrap(this.href); return false;"><i class="fa fa-<?php echo ($scrap_row['cnt']) ? "check-circle" : ""; ?>" aria-hidden="true"></i> <?php echo ($scrap_row['cnt']) ? "스크랩완료" : "스크랩"; ?> (<?php echo ($scrap_row['cnt']);?>)</a> <?php } ?> 이렇게 변경 해주시면 위 스샷대로 동작할 것입니다.
    고맙습니다.
    • 92cb0a4431cc296878f89f679526fd1a_1737072037_9082.png
    • 46
    • 오래 전
      2025.01.17
  • 오래 전
  • SQL Injection, XSS 보안 강화하기
  • update 페이지를 직접 작성하시는 경우 그누보드 내장함수 조합으로SQL Injection, XSS 공격을 방어할 수 있습니다.
    보통 update.php 에서 
    $aaa = isset($_POST['aaa']) ? $_POST['aaa'] : '';$sql = " UPDATE table_name SET aaa = '{$aaa}' WHERE bbb = '{$bbb}' ";sql_query($sql);
    이렇게 하기 마련인데, 이렇게되면 공격에 취약해질 수 있습니다.
    사용자가 입력 > 저장이 가능한 input 에 스크립트 파일을 추가하는 내용을 입력해서 저장되게하고,스크립트가 실행되면 쿠키 값이나 로컬 스토리지 및 세션 스토리지 등의 정보를 수집해서 서버로 전송할 수도있고, 스크린샷이 캡쳐되어 보내질 수도 있는 위험한 상황이 올 수 있습니다.
    일반 문자의 경우$aaa = isset($_POST['aaa']) ? strip_tags(clean_xss_attributes($_POST['aaa'])) : '';
    숫자의 경우$aaa = isset($_POST['aaa']) ? intval($_POST['aaa']) : '0';
    이렇게 그누보드의 내장 함수와 혼용해서 사용하시면 안전해집니다.
    DB로 저장되는 insert 나 update 에서는$sql = " UPDATE table_name SET aaa = '".sql_escape_string($aaa)."' WHERE bbb = '{$bbb}' ";이렇게 사용해서 SQL Injection 을 방어할 수 있습니다.
    저희 리빌더도 보안에 신경을 써야 될 것같습니다.감사합니다.
    • 45
    • 오래 전
      2025.01.15
  • 오래 전
  • [수정] 게시판 내 일정 확률로 보너스 포인트 지급 하기
  • 안녕하세요...미니님a 회원입니다.
    먼저 해당 팁은 그누보드 배포사이트인 SIR에도 작성하지 않고 오직 리빌더에만 작성하는 팁이며,기존에 SIR에 업로드 된 스킨 버그 수정된 버전입니다.
    ※ 본 팁은 손수 작성한 팁이며, 창작으로 제작된 기능이므로, 다른 곳에 퍼가실 땐 반드시 제 닉네임을 작성해주시길 바랍니다. 이는 최소한의 매너입니다. 그럴 일은 없겠지만, 진짜 진짜 만약에 발견되면, 팁 공유에 대한 고민이 ...생기............
    자!!!  RB 기본 스킨을 이용하면서,아 사용자에게 보너스 포인트 지급을 하고 싶은데 방법이 없을까? 하셨을 운영자님은 안계신가요 ?^^;
    해당 내용은 스킨과 연계됩니다. 잘 몰라서 스킨을 변경하실꺼면 아래 링크에서 스킨을 그대로 적용하시면 되며,이미 스킨이 상당히 커스터마이징이 많이 된 상태인 경우 해당 팁만 적용이 가능합니다.https://rebuilder.co.kr/userdata/280
    이런 느낌으로 동작합니다.

     
    글 그리고 댓글 모두 적용할 수 있습니다.
    1. 사용하시는 게시판 설정으로 들어가주세요그리고 맨 하단에 다음과 같이 추가 해주세요
     참고로 여분 필드 9번과 10번을 사용하고 있습니다.혹시라도, 다른 번호를 사용해야 한다면 아래 코드에서 변경 해주십시요.

    여분필드 9: 글확률/댓글 확률입니다.여분필드10: 글최소~글최대 / 댓글최소~댓글최대입니다.
    따라서 여분필드 9번의 경우 2개의 데이터 10번의 경우 4개의 데이터가 있어야 정상 동작합니다.만약 고정된 포인트를 지급하실려면 4개의 값을 고정해주세요 혹은 2개 2개씩예) 글 100포인트 / 댓글 50포인트
    100,100,50,50 으로 저장하시면 됩니다.

    자! 이제 수정하러 가봅시다.
    사용하시는 게시판 스킨 write_update.skin.php 파일을 열어 아래 코드를 넣어주세요
    [추가] 통합 게시판의 경우 update/basic/write_update.skin.php 파일을 열어 아래 코드를 추가 해주세요 (스크린샷과 동일하게 해주시면 됩니다.)     $bo_9_values = explode(',', $board['bo_9']);     $bo_10_values = explode(',', $board['bo_10']);     $probability = $bo_9_values[0];      $randomNumber = mt_rand() / mt_getrandmax();     $point_rand = rand($bo_10_values[0], $bo_10_values[1]);     if ($w == "" && $randomNumber <= $probability){         insert_point($member['mb_id'], $point_rand, "{$board['bo_subject']} {$wr_id} 글쓰기 보너스 포인트", $bo_table, $wr_id, '글쓰기보너스');     }  잘 모르겠다 하시면 아래 스샷 참조 하시길 바랍니다.


     
    자 그다음 댓글 보너스 포인트 지급을 위해 write_comment_update.skin.php 파일을 열어 아래 코드를 추가 해주세요[추가]통합 게시판의 경우 update/basic/cmt_update.skin.php 파일을 열어 아래 코드를 추가 해주세요 (스크린샷과 동일하게 해주시면 됩니다.)
    $bo_9_values = explode(',', $board['bo_9']); $bo_10_values = explode(',', $board['bo_10']); $probability = $bo_9_values[1];  $randomNumber = mt_rand() / mt_getrandmax(); $point_rand = rand($bo_10_values[2], $bo_10_values[3]); if ($w == "c" && $randomNumber <= $probability){     insert_point($member['mb_id'], $point_rand, "{$board['bo_subject']} {$wr_id}#{$comment_id} 댓글쓰기 보너스 포인트", $bo_table, $comment_id, '코멘트보너스'); } 
    마찬가지로 난 잘 모르곘다? 하시면 위치는 아래 스샷 참조 하시길 바랍니다.


     


    자! 이제 1/3 왔네요, 이제 화면에 보여줄 차례입니다.view.skin.php 파일을 열어서 다음 코드를 찾아주세요
    [추가]통합 게시판의 경우 view/basic/skin.php 파일을 열어   <div id="bo_v_share"> (241번 라인) 을 찾아주세요해당 라인 바로 위에 아래 코드를 넣어주시면 됩니다.
    <?php echo get_view_thumbnail($view['content']); ?>     </div> 그리고 그 아래에 해당 코드를 넣어주세요
    <?php                   $point_sql = "SELECT * FROM `{$g5['point_table']}` WHERE po_rel_table = '{$bo_table}' and po_rel_id = '{$wr_id}' and po_rel_action = '글쓰기보너스' ";         $result_point = sql_fetch($point_sql);         if($result_point) { ?>             <p class="text-xs" style="font-weight: 500;  font-size: 0.75rem; line-height: 1.25rem; padding: 0.625rem 1.25rem; padding-left:0;  border-radius: 0.5rem; margin-bottom: 0.5rem; margin-top: 1rem;"> 축하합니다. 보너스 <span style="font-weight:bold;"><?php echo $result_point['po_point']; ?></span>포인트를 획득 하였습니다.</p>         <?php } ?>
    마찬가지로 난 잘 모르겠는데? 하시면 아래 스샷 참조 하시면 됩니다.

     

    이제 댓글에도 남겨야죠 ?? 댓글은 view_comment.skin.php 파일을 열어서 다음 코드를 찾아주세요
    [추가]cmt/basic/skin.php 파일을 열어 아래 소스를 찾아주세요 똑같은 코드가 있습니다.
     <?php if($is_comment_reply_edit) {                 if($w == 'cu') {                     $sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";                     $cmt = sql_fetch($sql);                         if (isset($cmt)) {                             if (!($is_admin || ($member['mb_id'] == $cmt['mb_id'] && $cmt['mb_id']))) {                                 $cmt['wr_content'] = '';                             }                             $c_wr_content = $cmt['wr_content'];                         }                 } ?>                         <?php } ?>
    이 코드 아래에 해당 코드를 넣어주세요  <?php                   $point_sql = "SELECT * FROM `{$g5['point_table']}` WHERE po_rel_table = '{$bo_table}' and po_rel_id = '{$comment_id}' and po_rel_action = '코멘트보너스' ";                  $result_point = sql_fetch($point_sql);                 if($result_point) { ?> <p class="text-xs" style="font-weight: 500;  font-size: 0.75rem; line-height: 1.25rem; padding: 0.625rem 1.25rem; padding-left:0;  border-radius: 0.5rem; margin-bottom: 0.5rem; margin-top: 1rem;"> 축하합니다. 보너스 <span style="font-weight:bold;"><?php echo $result_point['po_point']; ?></span>포인트를 획득 하였습니다.</p> <?php } ?>
    이것도 아래 스샷 참고 하시면 위치는 확인 되실 것입니다.


     

    여기까지 오셨다면 아래 기능은 추가가 완료 되었지만, 문제점이 하나 발생합니다.바로 글이나 댓글 삭제 시 보너스 포인트가 회수가 안된다는 버그인데요
    이제 그 부분도 해결해보겠습니다.리빌더 기본 스킨에는 해당 파일이 기본적으로 없습니다.따라서 파일명 잘 보시고 직접 생성하셔야 합니다.
    만약 해당 파일이 있다면 코드만 넣어주세요
    먼저 글삭제 파일 delete.skin.php 파일을 생성 해주세요
    그리고 아래 코드를 넣어주세요
    [추가]통합 게시판도 하단의 코드는 동일하게 작성하시면 됩니다. <?php if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가  // 글쓰기 보너스 포인트 회수 $sql_point = "SELECT * FROM `{$g5['point_table']}` WHERE po_rel_table = '{$bo_table}' and po_rel_id = '{$wr_id}' and po_rel_action = '글쓰기보너스' "; $result_point = sql_fetch($sql_point); if($result_point) {     insert_point($write['mb_id'], $result_point['po_point'] * (-1), "{$board['bo_subject']} {$write['wr_parent']} 글삭제", $bo_table, $wr_id, '글쓰기삭제'); } // 해당 글의 댓글 보너스 포인트 회수 $sql = " select wr_id, mb_id from {$write_table} where wr_parent = '{$wr_id}' and wr_is_comment = 1 "; $result = sql_query($sql); while ($row = sql_fetch_array($result)) {     $sql_comment_point = "SELECT * FROM `{$g5['point_table']}` WHERE po_rel_table = '{$bo_table}' and po_rel_id = '{$row['wr_id']}' and po_rel_action = '코멘트보너스' ";     $result_comment_point = sql_fetch($sql_comment_point);          if($result_comment_point) {         insert_point($row['mb_id'], $result_comment_point['po_point'] * (-1), "{$board['bo_subject']} {$wr_id} 댓글삭제", $bo_table, $row['wr_id'], '댓글삭제');     } }
    햐당 파일은 그냥 처음 만든 파일이라 걍 싹 다 복사해서 복붙하시면 됩니다.
    이제 댓글 삭제 포인트 회수하러 갑시다.delete_comment.skin.php 파일을 생성 해주세요그리고 아래 코드를 전체 넣어주시면 끝입니다.
    [추가]통합 게시판도 하단의 코드는 동일하게 작성하시면 됩니다. <?php if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가  $sql_point = "SELECT * FROM `{$g5['point_table']}` WHERE po_rel_table = '{$bo_table}' and po_rel_id = '{$comment_id}' and po_rel_action = '코멘트보너스' "; $result_point = sql_fetch($sql_point); if($result_point) {     insert_point($write['mb_id'], $result_point['po_point'] * (-1), "{$board['bo_subject']} {$write['wr_parent']}-{$comment_id} 댓글삭제", $bo_table, $wr_id, '댓글삭제'); }
    그러면 아래 처럼가 잘 처리 될 것입니다.



    아래는 전체적으로 구동되는 움짤 영상입니다. 클릭 하시면 큰 화면에서 확인이 가능합니다.고맙습니다.

     
     





    [수정]
    25. 02. 23- 통합 게시판용 소스에 대한 설명 추가

    • 92cb0a4431cc296878f89f679526fd1a_1736923772_5857.png
    • 44
    • 오래 전
      2025.01.05
  • 오래 전
  • 베이직2 게시판 리스트에 인기글, 공지사항 넣기
  • list.skin.php
    271줄 아래<?php if($list[$i]['comment_cnt']) { ?><span class="fl_icons font-B main_color">+<?php echo number_format($list[$i]['wr_comment']); ?></span><?php } ?>
    넣어 주면 됩니다.
    <?php if($list[$i]['icon_new'] || $list[$i]['icon_hot'] || $list[$i]['is_notice']) { ?> <!--<?php if ($list[$i]['icon_new']) echo "<span class="lb_ico_new">새글</span>"; ?>--> <?php if ($list[$i]['icon_hot']) echo "<span class="lb_ico_hot">인기</span>"; ?> <?php if ($list[$i]['is_notice']) echo "<span class="lb_ico_noti">공지</span>"; ?> <?php } ?>
    • 43
    • 오래 전
      2024.12.27
  • 오래 전
  • 쇼핑몰 스킨 설정을 미리 지정 하는 팁입니다.
  • 반복 작업을 하다 보니선택의 의미가 없는 듯 해서요.
    (테마)basic으로 미리 설정 해 두는 것 입니다.
    /adm/shop_admin/itemform.php 에서
    13~14 번째 줄
    'it_skin'=>'','it_mobile_skin'=>'', 해당 부분을
    'it_skin'=>'theme/basic','it_mobile_skin'=>'theme/basic',
    해주면 테마 basic이 선택 되어 나옵니다.
    • 42
    • 오래 전
      2024.12.24
  • 오래 전
  • 보안서버 입력시 경로 입력하기
  • config.php 파일에서아래의 부분에 주소를 적게 되는데요.
    define('G5_DOMAIN', '');define('G5_HTTPS_DOMAIN', '');
    잘 못 입력하면접속이 되기도 하고 안되기도 하고 하더군요.

    아래와 같이 넣어주면쉽게 고민 안하고 잘 접속 됩니다.
    define('G5_DOMAIN', 'https://'.$_SERVER['HTTP_HOST']);define('G5_HTTPS_DOMAIN', 'https://'.$_SERVER['HTTP_HOST']);
    폰트어썸도 안 깨진 답니다.
    • 41
    • 오래 전
      2024.12.20
  • 오래 전
  • 카카오톡 링크 보낼 때 이미지 깔끔하게 보내기
  • 카카오톡 에서 자신의 홈페이지를 링크 걸 때원하는 이미지로 보내지는 겁니다.
    환경설정 > 추가 메타태그에 넣어 주세요.
    <meta property="og:title" content="홈페이지 제목"/> <meta property="og:url" content="홈페이지 주소/"/> <meta property="og:description" content="홈페이지 설명"/> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="홈페이지 주소/img/cacao.png?ver=20241220"/>
    다른 이미지로 변경시20241220 이부분을 오늘 날짜로 바꾸어 주면 이미지가 빨리 갱신 될 거에요.
    • 40
    • 오래 전
      2024.12.19
  • 오래 전
  • 첨부 이미지 중앙 정렬하기
  • 첨부 이미지는 좌측으로 보여 지는데요.
    해당 view.skin.php 부분 186번째 줄 보면 (갤러리 게시판 기준)
    echo "<div id=\"bo_v_img\">\n"; 이부분을 아래와 같이 수정해 보세요.echo "<div id=\"bo_v_img\" style='text-align:center'>\n";

        <!-- 본문 내용 시작 { -->     <div id="bo_v_con">         <?php             // 파일 출력             $v_img_count = count($view['file']);             if($v_img_count) {                 echo "<div id="bo_v_img" style='text-align:center'>n";                 foreach($view['file'] as $view_file) {                     echo get_file_thumbnail($view_file);                 }                 echo "</div>n";             }         ?>
    • 39
    • 오래 전
      2024.12.14
  • 오래 전
  • 마우스 오버시 카테고리 메뉴 색상 변경하기
  • 해당 보드의 style.css
    402 줄 정도 보면
    .rb_bbs_wrap #bo_cate a:hover {background-color: transparent; font-family:'font-B',sans-serif; color:#AA20FF;}
    color:#AA20FF; 추가 해주면 마우스 오버시 원하는 색상으로 카테고리 메뉴가 나 옵니다.

     
    • 38
    • 오래 전
      2024.12.09
  • 오래 전
  • 금일 게시글 수 및 댓글 수 그리고 신규회원/총 회원 노출하기
  • 카운터 스킨 /theme/rb.basic/skin/visit/basic/ 경로 파일을 수정 해주시면 됩니다.
    <?php if ($is_admin == "super") {?> 이 부분은 관리자만 볼 수 있는 권한 입니다.

    [code]<?phpif (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
    global $is_admin;
    // add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨add_stylesheet('<link rel="stylesheet" href="'.$visit_skin_url.'/style.css">', 0);

    $today_date = date("Y-m-d");$today_sql = "SELECT                (SELECT COUNT(*) FROM g5_board_new WHERE DATE(bn_datetime) = '$today_date' AND wr_id = wr_parent) AS write_count,                (SELECT COUNT(*) FROM g5_board_new WHERE DATE(bn_datetime) = '$today_date' AND wr_id <> wr_parent) AS comment_count"; $today_query = sql_query($today_sql);$today_result = sql_fetch_array($today_query); $write_count = $today_result['write_count'];$comment_count = $today_result['comment_count'];
    global $is_admin;
    // add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨add_stylesheet('<link rel="stylesheet" href="'.$visit_skin_url.'/style.css">', 0);

    ?>
    <div class="visit_flex">    <ul><li class="RealCount_t main_color font-B">RealCount</li>
    <?php if ($is_admin == "super") {?> <li>금일 게시글수 <span class="font-B"><?php echo number_format($write_count) ?></span></li> <li>금일 댓글수 <span class="font-B"><?php echo number_format($comment_count) ?></span></li> <li>신규회원/총 <span class="font-B"> <!-- 접속자집계 시작 { -->
          <?php                        $sql_m7_COUNT="select COUNT(*) as ma_cou from `g5_member` where  mb_open_date >=(curdate()-interval 7 day)"; $row_sql_m7_COUNT = sql_fetch($sql_m7_COUNT);                       echo $row_sql_m7_COUNT[ma_cou];echo "/";                    $sql_m_COUNT="SELECT COUNT(*) as ma_cou FROM `g5_member`"; $row_sql_m_COUNT = sql_fetch($sql_m_COUNT);

      echo $row_sql_m_COUNT[ma_cou];                    ?> <!-- } 접속자집계 끝 --> </li>
    <?php } ?>        <li>오늘 <span class="font-B"><?php echo number_format($visit[1]) ?></span></li>        <li>어제 <span class="font-B"><?php echo number_format($visit[2]) ?></span></li>        <li>최대 <span class="font-B"><?php echo number_format($visit[3]) ?></span></li>        <li>전체 <span class="font-B"><?php echo number_format($visit[4]) ?></span></li>    </ul></div>[/code]
    • 37
    • 오래 전
      2024.12.06
  • 오래 전
  • 오른쪽 마우스 클릭 금지 하기
  • 관리자는 오른쪽 마우스가 활성화 되지만회원들은 오른쪽 마우스가 먹통 됩니다.
    sir : glitter0gim 님께서 알려주셨어요.
    [code]<?php if (!$is_admin): // 관리자 권한 확인 ?>    <script>        document.addEventListener("DOMContentLoaded", function() {            function disableEvent(event) {                event.preventDefault();            }            // 마우스 오른쪽 방지            document.body.addEventListener("contextmenu", disableEvent);            // 드래그 방지            document.body.addEventListener("dragstart", disableEvent);            // 텍스트 방지            document.body.addEventListener("selectstart", disableEvent);            // 키보드 방지            document.addEventListener("keydown", function(event) {                if ((event.ctrlKey || event.metaKey) && (event.key === 'c' || event.key === 's')) {                    event.preventDefault();                }            });        });    </script><?php endif; ?>[/code]
    • 36
    • 오래 전
      2024.11.25
  • 오래 전
  • 게시물 가끔 사진이 위에꺼가 아래에 보이는 현상해결법
  • 썸네일이 아래 글에 썸네일이 없는경우아래글에 위에 썸네일이 보이는증상이 있습니다.처리해야할 빨강색 부분입니다.
                $thumb = get_list_thumbnail($board['bo_table'], $list[$i]['wr_id'], $board['bo_gallery_width'], $board['bo_gallery_height'], false, true);                        if($thumb['src']) {                if (strstr($list[$i]['wr_option'], 'secret')) {                    $img_content = '<img src="'.G5_THEME_URL.'/rb.img/sec_image.png" alt="'.$thumb['alt'].'" >';                } else {                     $img_content = '<img src="'.$thumb['src'].'" alt="'.$thumb['alt'].'" >';                }            } else {         // 이미지가 없는 경우         $img_content = '';     }
    • 35
    • 오래 전
      2024.11.19
  • 오래 전
  • 카카오소셜 토큰 연결끊기
  • kakao로그인후에 연결해제하거나 탈퇴해도 연결이 토큰 끊기지 않는 부분 아래 admin키를 발급받아서 처리하면됩니다.
    function getKakaoUserIdByMbId($mb_id) {    global $g5;    $sql = "SELECT identifier FROM g5_member_social_profiles WHERE mb_id = '{$mb_id}'";    $row = sql_fetch($sql);
        if ($row && isset($row['identifier'])) {        return $row['identifier']; // 카카오 user_id 반환    } else {        return null; // 카카오 user_id가 없음    }}

    function kakaoUnlinkUser($kakaoUserId) {    $adminKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'; // 카카오 앱의 관리자 키    $url = 'https://kapi.kakao.com/v1/user/unlink';
        $headers = array(        "Authorization: KakaoAK $adminKey",        "Content-Type: application/x-www-form-urlencoded;charset=utf-8"    );
        $postData = array(        'target_id_type' => 'user_id',        'target_id' => $kakaoUserId    );
        $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_POST, true);    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $response = curl_exec($ch);    $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);    curl_close($ch);
        if ($statusCode == 200) {        echo "사용자의 카카오 연결이 성공적으로 해제되었습니다.";        return true;    } else {        echo "연결 해제 실패: " . $response;        return false;    }}
    [사용법]
    $kakaoUserId = getKakaoUserIdByMbId($mb_id);//소셜 아이디 구하기 kakaoUnlinkUser($kakaoUserId);//카카오 연결끊기
    • 34
    • 오래 전
      2024.11.19
  • 오래 전
  • 상품보기에서 관리자 바로 수정하기
  • /theme/rb.basic/skin/shop/basic/item.form.skin.php
    적당한 곳에 넣으시면 노출 됩니다.
    [code]<?php if ($is_admin) {  ?><a href="<?php echo G5_URL; ?>/adm/shop_admin/itemform.php?w=u&it_id=<?php echo $it['it_id']; ?>&ca_id=<?php echo $it['ca_id']; ?> <font color="red">제품수정</font></a><?php } ?>[/code]
    • 33
    • 오래 전
      2024.11.19
  • 오래 전
  • 유튜브, 비메오 링크1, 2에 등록하면 본문에서 자동출력 및 재생
  • 안녕하세요 저 아래 댓글에 링크1, 링크2에유튜브 비메오 링크 넣으면 본문에 출력되는 방법을 물어보셔서 이렇게 간단한 방법으로 글 남깁니다.~추가로 게시물을 읽으면 링크의 영상이 바로 자동재생 되도록 하였습니다.이부분은 함수에서 ?autoplay=1&mute=1 이부분에 해당 되니 참고하시면 됩니다.
    1. 대상파일 : 게시판 스킨 view_skin.php


    2. 상단 php 안에 아래 함수 추가
    // 링크1과 링크2에 대해 YouTube, Vimeo, twitter, instagram,  링크를 감지하고 변환function embed_video_with_autoplay($url) {    // 유튜브 URL 처리    if (preg_match('/youtu\.be\/([a-zA-Z0-9_-]+)/', $url, $matches) ||         preg_match('/youtube\.com\/.*v=([a-zA-Z0-9_-]+)/', $url, $matches)) {        $video_id = $matches[1];        return "<iframe width='100%' height='315' src='https://www.youtube.com/embed/{$video_id}?autoplay=1&mute=1' frameborder='0' allow='autoplay; encrypted-media' allowfullscreen></iframe>";    }        // 비메오 URL 처리    if (preg_match('/vimeo\.com\/(\d+)/', $url, $matches)) {        $video_id = $matches[1];        return "<iframe width='100%' height='315' src='https://player.vimeo.com/video/{$video_id}?autoplay=1&mute=1' frameborder='0' allow='autoplay; fullscreen' allowfullscreen></iframe>";    }
        // 페이스북 동영상 링크에서 ID를 추출 (https://fb.watch/{video_id})    // 페이스북 동영상 링크에서 ID를 추출 (https://www.facebook.com/{page}/videos/{video_id}) if (preg_match('/fb\.watch\/([a-zA-Z0-9_-]+)/', $url, $matches)) {        $video_id = $matches[1];        return "<iframe src='https://www.facebook.com/plugins/video.php?href=https://fb.watch/{$video_id}' width='100%' height='315' frameborder='0' allowfullscreen></iframe>";    }
        // 유튜브, 비메오, 트위터, 인스타그램 URL이 아니면 빈 문자열 반환    return "";}

    3. style 추가<?php.....?><style>iframe {    width: 100%;    aspect-ratio: 16 / 9; /* 16:9 비율 */    height: auto; /* 실제 높이는 aspect-ratio에 의해 자동 계산됨 */}</style>


    4. 출력할 곳에 아래 코드 추가보통 글 내용 최상단에 출력되려면<?php echo get_view_thumbnail($view['content']); ?> 이부분 바로 위에 아래 코드 추가
    <?php  // 링크1과 링크2 유튜브 또는 비메오 링크 일 경우 본문에 영상 자동재생 되도록 출력 $link1_embed = $view['link'][1] ? embed_video_with_autoplay($view['link'][1]) : ''; $link2_embed = $view['link'][2] ? embed_video_with_autoplay($view['link'][2]) : '';
    // 출력 echo $link1_embed; echo $link2_embed; ?>
    • 32
    • 오래 전
      2024.11.14
  • 오래 전
  • Froala Editor 에디터에서 고정이 안되는부분
  • 하단 푸터에집어넣으면에디터가 500px높이로 스크롤되어 고정됩니다.
    <style>.fr-wrapper {    height: 500px; /* 고정된 높이 */    overflow-y: auto; /* 내용이 넘칠 때 스크롤 추가 */}
    /* 모바일 화면에서 높이 조정 */@media (max-width: 768px) {    .fr-wrapper {        height: 400px; /* 모바일 높이 */    }}
    </style>
    • 31
    • 오래 전
      2024.11.14
  • 오래 전
  • 입점몰 - 주문한 상품 입점사 파트너에게 문자 전송기능
  • 관리자에게만 문자가 전송되어 입점사는 주문들어온것을 알수가 없습니다. 이부분이 핵심기능이라일단 추가해보았습니다.
    수정은 간단합니다.mobile하고 pc하고 꼭해야합니다shop/orderformupdate.php 에서
    870라인정도에 sms발송하는 기능이 있는데 그 윗줄에 그냥 넣으시면됩니다.
    주문한 상품의 입점사에게 문자가 발송되고전화번호 중복되지 않습니다. 
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 입점사 정보 가져오기 코드
    include_once(G5_LIB_PATH.'/icode.sms.lib.php');
    $sql_partner = "SELECT DISTINCT m.mb_hp                 FROM g5_member m                JOIN g5_shop_cart c ON m.mb_id = c.ct_partner                JOIN g5_shop_item i ON i.it_id = c.it_id                WHERE m.mb_partner = 2                   AND c.od_id = '$od_id'                   AND i.it_partner = c.ct_partner";$result_partner = sql_query($sql_partner);$partner_numbers = array();
    while ($row_partner = sql_fetch_array($result_partner)) {    if ($row_partner['mb_hp']) {        $formatted_number = preg_replace("/[^0-9]/", "", $row_partner['mb_hp']);//str_replace("-", "", $row_partner['mb_hp']); // 하이픈 제거        if (!in_array($formatted_number, $partner_numbers)) { // 입점사 번호 중복 방지            $partner_numbers[] = $formatted_number;        }    }}
    // SMS 전송 시작if (count($partner_numbers) > 0) {    $SMS = new SMS; // SMS 연결    $SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
        foreach ($partner_numbers as $recv_number) {//상품에 해당하는 입점사메시지발송
        $send_number = preg_replace("/[^0-9]/", "", $default['de_admin_company_tel']);        $sms_content = $default['de_sms_cont3']; // 관리자용 메시지 내용
    //내용에 값으로 변환작업실시 $sms_content = str_replace("{이름}", $od_name, $sms_content); $sms_content = str_replace("{보낸분}", $od_name, $sms_content); $sms_content = str_replace("{받는분}", $od_b_name, $sms_content); $sms_content = str_replace("{주문번호}", $od_id, $sms_content); $sms_content = str_replace("{주문금액}", number_format($tot_ct_price + $od_send_cost + (int) $od_send_cost2), $sms_content); $sms_content = str_replace("{회원아이디}", $member['mb_id'], $sms_content); $sms_content = str_replace("{회사명}", $default['de_admin_company_name'], $sms_content);
            $sms_content = iconv_euckr($sms_content);//한글깨지지않게 처리        echo $SMS->Add($recv_number, $send_number, $config['cf_icode_id'], $sms_content, "");//메시지발송    }
        $SMS->Send();    $SMS->Init(); // 보관하고 있던 결과값을 지웁니다.}
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    아래는 기존 소스 그대로 ...

    • 30
    • 오래 전
      2024.11.13
  • 오래 전
  • 바로가기 홈으로 등록한경우 당기면 새로고침 안되는부분 해결방법
  • 바로가기 홈으로 등록한 홈페이지가 위에서 아래로 당기면 새로고침이 안되는데pwa에서 이부분이 지원이 안되서 따로 만들어야 한다고 합니다.아래소스는 tail.php 하단에 넣으시면됩니다.
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pulltorefreshjs/0.1.22/index.umd.min.js"></script>
    <script>
    let touchStartY = 0;let touchMoveY = 0;let isPullingDown = false;
    const standalone = window.matchMedia("(display-mode: standalone)").matches if(standalone) {
    // touchstart 이벤트로 초기 터치 지점 저장window.addEventListener('touchstart', function(event) {    // 스크롤이 맨 상단인지 확인 (window.scrollY 또는 다른 방식으로)    if (document.body.scrollTop === 0 || document.documentElement.scrollTop === 0) {        touchStartY = event.touches[0].clientY;        isPullingDown = false; // 초기화    }}, false);
    // touchmove 이벤트로 사용자가 스크롤하고 있는지 감지window.addEventListener('touchmove', function(event) {
        touchMoveY = event.touches[0].clientY;
        // 사용자가 아래로 당기고 스크롤이 맨 상단에 있을 때만 동작    if (touchMoveY > touchStartY && (document.body.scrollTop === 0 || document.documentElement.scrollTop === 0)) {        let distancePulled = touchMoveY - touchStartY;
            // 일정 거리 이상 당기면 새로고침 동작 감지        if (distancePulled > 50) {            isPullingDown = true;            console.log('Pulling down detected:', distancePulled, 'px');            // 새로고침 UI 표시 등을 여기에 추가        }    }}, false);
    // touchend 이벤트로 사용자가 손을 뗐을 때 동작window.addEventListener('touchend', function(event) {
    // alert(document.body.scrollTop);    if (isPullingDown && document.body.scrollTop<=0) {        console.log('Released after pulling down');        // 새로고침 또는 다른 동작 실행        window.location.reload(); // 새로고침        isPullingDown = false;    }}, false); }

    </script>
    • 29
    • 오래 전
      2024.11.11
  • 오래 전
  • 윈도우에서 전원 설정에서 최고의 성능 설정
  • 윈도우(키) + r 
    cmdpowercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61Copy위에 글자를 복사해서 붙여넣기 한다. 윈도우(키) + r 
    powercfg.cpl
    실행한다 최고의 성능 설정 할수 있다. 
    • 28
    • 오래 전
      2024.11.06
  • 오래 전
  • 게시글에 view.skin.php에서 유투브 링크 삽입하면 바로 영상 플레이되게 하는것
  •   <?php //echo get_view_thumbnail($view['content']); ?>를 추석처리후에 아래처럼 바꿔주세요스타일 넣어주시구요
    <style>.youtube_wrap {    position: relative;    padding-bottom: 56.25%; /* 16:9 aspect ratio */    height: 0;    overflow: hidden;    max-width: 100%;    background: #000;    margin-top: 20px;}.youtube_wrap iframe {    position: absolute;    top: 0;    left: 0;    width: 100%;    height: 100%;}
    </style>
    <?php    // Process the content using get_view_thumbnail    $processed_content = get_view_thumbnail($view['content']);
        // Further process the output to embed YouTube URLs responsively    $processed_content = preg_replace_callback(        '/(?<!<a href=")https:\/\/(?:www\.)?(?:youtube\.com\/watch\?v=|youtu\.be\/)([a-zA-Z0-9_-]{11})(?!")/',        function($matches) {            $youtube_id = $matches[1];            return '<div class="youtube_wrap">                        <iframe src="https://www.youtube.com/embed/' . $youtube_id . '" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>                    </div>';        },        $processed_content    );    echo $processed_content;?>

검색

게시물 검색