<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>즐거운 코딩 생활 ( funyphp ) &amp;gt; community &amp;gt; gnuboard</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard</link>
<language>ko</language>
<description>gnuboard (2022-05-06 15:11:41)</description>

<item>
<title>그누보드4 cheditor5에서 플래쉬 업로드 바꾸기</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=79</link>
<description><![CDATA[<p>그누보드4 에서 플래쉬를 통해 업로드를 하던 부분이 플래쉬가 서비스 종료되므로</p>
<p>더이상 지원이 되지 않는 이부분을 수정하기 위한 설정.</p>
<p>기존 플래쉬로 업로드 되던 부분을 업로드 수정한다. </p>
<p>수정파일 2개 </p>
<p>/cheditor5/popup/image.html </p>
<p>/cheditor5/popup/js/image.js </p>
<p><br /></p>
<p>먼저 이두개의 파일을 백업을 해두시는게 좋겠습니다. </p>
<p><br /></p>
<p>-------------- image.html 수정 ----------------- </p>
<p>기존 </p>
<p>&lt;script src="js/image.js" type="text/javascript"&gt;&lt;/script&gt; </p>
<p>&lt;script src="js/image_upload_flash.js" type="text/javascript"&gt;&lt;/script&gt; </p>
<p>&lt;script type="text/javascript"&gt; </p>
<p>&lt;/script&gt; </p>
<p><br /></p>
<p>이부분을 </p>
<p>&lt;script src="js/image.js" type="text/javascript"&gt;&lt;/script&gt; </p>
<p>&lt;script src="//code.jquery.com/jquery-1.12.4.min.js" type="text/javascript"&gt;&lt;/script&gt; </p>
<p>&lt;script src="js/dialog.js" type="text/javascript"&gt;&lt;/script&gt; </p>
<p>&lt;!-- &lt;script src="js/image_upload_flash.js" type="text/javascript"&gt;&lt;/script&gt; --&gt; </p>
<p>&lt;script type="text/javascript"&gt; </p>
<p>    function noFlashUploadOpen() { </p>
<p>        $("#nfile").click(); // 숨김 input file를 클릭하는 효과 </p>
<p>    } </p>
<p><br /></p>
<p><span style="white-space:pre;"></span>function noFlashUpload() { </p>
<p><span style="white-space:pre;"></span>console.log("?"); </p>
<p><span style="white-space:pre;"></span>var uplist = $("#nfile").get(0).files; // 숨김 input file에서 파일 배열을 가져옴 </p>
<p><br /></p>
<p><span style="white-space:pre;"></span>if(uplist.length &lt; 1) return; // 첨부없으면 끝 </p>
<p><span style="white-space:pre;"></span>for(var i = 0; i &lt; uplist.length; i++) { // 각 파일의 형식 제한 </p>
<p><span style="white-space:pre;"></span>if(uplist[i].type != "image/png" &amp;&amp; uplist[i].type != "image/gif" &amp;&amp; uplist[i].type != "image/jpg" &amp;&amp; uplist[i].type != "image/jpeg") { </p>
<p><span style="white-space:pre;"></span>fileFilterError(uplist[i].name); return; </p>
<p><span style="white-space:pre;"></span>} </p>
<p><span style="white-space:pre;"></span>} </p>
<p><br /></p>
<p><span style="white-space:pre;"></span>// 업로드 시작 알림(로더) </p>
<p><span style="white-space:pre;"></span>startUpload(uplist.length); // image.js </p>
<p><br /></p>
<p><span style="white-space:pre;"></span>// 업로드 작업 </p>
<p><span style="white-space:pre;"></span>// cheditor5/imageUpload/upload.php 에서 1개씩만 업로드를 처리하므로 개별처리 </p>
<p><span style="white-space:pre;"></span>// 순차 처리를 위해서 ajax의 비동기를 끔 async: false </p>
<p><span style="white-space:pre;"></span>// 업로드 진행율이 필요없으므로 xhr 은 제외 </p>
<p><span style="white-space:pre;"></span>for(var i = 0; i &lt; uplist.length; i++) { </p>
<p><span style="white-space:pre;"></span>var formData = new FormData(); </p>
<p><span style="white-space:pre;"></span>formData.append("file", uplist[i]); </p>
<p><span style="white-space:pre;"></span>$.ajax( { </p>
<p><span style="white-space:pre;"></span>url: UploadScript, </p>
<p><span style="white-space:pre;"></span>type: "POST", </p>
<p><span style="white-space:pre;"></span>contentType: false, </p>
<p><span style="white-space:pre;"></span>processData: false, </p>
<p><span style="white-space:pre;"></span>crossDomain: true, </p>
<p><span style="white-space:pre;"></span>cache: false, </p>
<p><span style="white-space:pre;"></span>async: false, </p>
<p><span style="white-space:pre;"></span>dataType: "text", // 여기 본인 상황에 맞게 </p>
<p><span style="white-space:pre;"></span>data: formData, </p>
<p><span style="white-space:pre;"></span>success: function(response, textStatus, xhr) { </p>
<p><span style="white-space:pre;"></span>uploadComplete(response); </p>
<p><span style="white-space:pre;"></span>}, </p>
<p><span style="white-space:pre;"></span>error: function(xhr, textStatus, error) { </p>
<p><span style="white-space:pre;"></span>console.log(xhr.responseText); </p>
<p><span style="white-space:pre;"></span>} </p>
<p><span style="white-space:pre;"></span>}); </p>
<p><span style="white-space:pre;"></span>} </p>
<p><span style="white-space:pre;"></span>} </p>
<p>&lt;/script&gt; </p>
<p><br /></p>
<p>이부분을  </p>
<p>&lt;div style="float:right;margin:0px 0px 7px 0px"&gt; </p>
<p>&lt;table border="0" cellpadding="0" cellspacing="0"&gt; </p>
<p><span style="white-space:pre;"></span>&lt;tr&gt; </p>
<p><span style="white-space:pre;"></span>&lt;td id="oFlash"&gt;&lt;/td&gt; </p>
<p><span style="white-space:pre;"></span>&lt;td&gt;&lt;img src="../icons/imageUpload/remove_all.gif" class="button" style="margin-left:3px;vertical-align:middle" onclick="removeImage()" alt="" /&gt;&lt;/td&gt; </p>
<p><span style="white-space:pre;"></span>&lt;/tr&gt; </p>
<p>&lt;/table&gt; </p>
<p>&lt;/div&gt; </p>
<p><br /></p>
<p>아래처럼 수정 </p>
<p><span style="white-space:pre;"></span>&lt;div style="float:right;margin:0px 0px 7px 0px"&gt; </p>
<p><span style="white-space:pre;"></span>&lt;table border="0" cellpadding="0" cellspacing="0"&gt; </p>
<p><span style="white-space:pre;"></span>&lt;tr&gt; </p>
<p><span style="white-space:pre;"></span>&lt;td id="oFlash"&gt;&lt;input type="file" id="nfile" name="nfile" multiple="multiple" accept=".gif,.jpg,.jpeg,.png" style="display:none" onchange="noFlashUpload()"/&gt; &lt;img src="../icons/imageUpload/add_image_button.gif" style="margin-left:3px;vertical-align:middle;cursor:pointer" onclick="noFlashUploadOpen()" alt="" /&gt;&lt;/td&gt; </p>
<p><span style="white-space:pre;"></span>&lt;td&gt;&lt;img src="../icons/imageUpload/remove_all.gif" class="button" style="margin-left:3px;vertical-align:middle" onclick="removeImage()" alt="" /&gt;&lt;/td&gt; </p>
<p><span style="white-space:pre;"></span>&lt;/tr&gt; </p>
<p><span style="white-space:pre;"></span>&lt;/table&gt; </p>
<p><span style="white-space:pre;"></span>&lt;/div&gt; </p>
<p><br /></p>
<p>-------------- image.js 수정 ----------------- </p>
<p>기존파일의 최하단에 다음을 추가 </p>
<p><br /></p>
<p>function noFlashUploadOpen() { </p>
<p>    $("#nfile").click(); // 숨김 input file를 클릭하는 효과 </p>
<p>} </p>
<p><br /></p>
<p>function noFlashUpload() { </p>
<p>    var uplist = $("#nfile").get(0).files; // 숨김 input file에서 파일 배열을 가져옴 </p>
<p>    if(uplist.length &lt; 1) return; // 첨부없으면 끝 </p>
<p><br /></p>
<p>    for(var i = 0; i &lt; uplist.length; i++) { // 각 파일의 형식 제한 </p>
<p>        if(uplist[i].type != "image/png" &amp;&amp; uplist[i].type != "image/gif" &amp;&amp; uplist[i].type != "image/jpg" &amp;&amp; uplist[i].type != "image/jpeg") { </p>
<p>            fileFilterError(uplist[i].name); return; </p>
<p>        } </p>
<p>    } </p>
<p><br /></p>
<p>    // 업로드 시작 알림(로더) </p>
<p>    startUpload(uplist.length); // image.js </p>
<p><br /></p>
<p>    // 업로드 작업 </p>
<p>    // cheditor5/imageUpload/upload.php 에서 1개씩만 업로드를 처리하므로 개별처리 </p>
<p>    // 순차 처리를 위해서 ajax의 비동기를 끔 async: false </p>
<p>    // 업로드 진행율이 필요없으므로 xhr 은 제외 </p>
<p>    for(var i = 0; i &lt; uplist.length; i++) { </p>
<p>        var formData = new FormData(); </p>
<p>        formData.append("file", uplist[i]); </p>
<p><br /></p>
<p>        $.ajax( { </p>
<p>            url: UploadScript, </p>
<p>            type: "POST", </p>
<p>            contentType: false, </p>
<p>            processData: false, </p>
<p>            crossDomain: true, </p>
<p>            cache: false, </p>
<p>            async: false, </p>
<p>            dataType: "text", // 여기 본인 상황에 맞게 </p>
<p>            data: formData, </p>
<p>            success: function(response, textStatus, xhr) { </p>
<p>                uploadComplete(response); </p>
<p>            }, </p>
<p>            error: function(xhr, textStatus, error) { </p>
<p>                console.log(xhr.responseText); </p>
<p>            } </p>
<p>        }); </p>
<p>    } </p>
<p>} </p>
<p> </p>
<p>참고자료 : https://sir.kr/g5_tip/15115</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2022-05-06T15:11:41+09:00</dc:date>
</item>


<item>
<title>[ youngcart ] pp_cli_x64 파일을 바이너리 타입으로 다시 업로드하여 주십시오.</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=78</link>
<description><![CDATA[<p>pp_cli_x64 파일을 바이너리 타입으로 다시 업로드하여 주십시오.</p>
<p>파일질라에서 해당파일을 바이너리 타입으로 다시 전송한다.</p>
<p>파일을 전송하면 644의 권한을 갖는다.</p>
<p>권한을 755로 변경해 준다.</p>
<p> </p>
<p><img src="https://funyphp.com/data/editor/2101/20210125214940_1b7146cf17e6b7430160e239f3bb8667_l3bu.png" alt="a11.png" /></p>
<p> </p>
<p><img src="https://funyphp.com/data/editor/2101/20210125215048_1b7146cf17e6b7430160e239f3bb8667_joc8.png" alt="a12.png" /></p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-01-25T21:51:42+09:00</dc:date>
</item>


<item>
<title>[ gnuboard ] 게시판 상세보기에서 이미지 view_iamge 로 보이는부분 없애기</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=77</link>
<description><![CDATA[<p>common.lib.php  1407줄 아래처럼 주석처리</p>
<p>if (preg_match("/\.({$config['cf_image_extension']})$/i", $file)) {</p>
<p>    //$attr_href = run_replace('thumb_view_image_href', G5_BBS_URL.'/view_image.php?bo_table='.$board['bo_table'].'&amp;amp;fn='.urlencode($file), $file, $board['bo_table'], $width, $height, $content);</p>
<p>    //$img = '&lt;a href="'.$attr_href.'" target="_blank" class="view_image"&gt;';</p>
<p>    $img .= '&lt;img src="'.G5_DATA_URL.'/file/'.$board['bo_table'].'/'.urlencode($file).'" alt="'.$content.'" '.$attr.'&gt;';</p>
<p>    //$img .= '&lt;/a&gt;';</p>
<p>    return $img;</p>
<p>}</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2020-12-17T13:25:27+09:00</dc:date>
</item>


<item>
<title>[ yg5 ] 영카트 - 일정금액 이상 부터 결제 되게 하기</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=75</link>
<description><![CDATA[<p>pc버젼 /shop/orderform.sub.php 1371줄</p>
<p>var tot_price = od_price + send_cost + send_cost2 - send_coupon - temp_point;</p>
<p>아랫줄</p>
<p>계좌이체, 신용카드, 휴대폰 등 최대 금액 설정</p>
<p>현금은 설정이 없음. 추가해주면 됨.</p>
<p><br /></p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>/* 최소 결제 금액 추가 freemaster : 2020.12.15 */</p>
   <p>/*</p>
   <p>if (document.getElementById("od_settle_iche")) {</p>
   <p>    if (document.getElementById("od_settle_iche").checked) {</p>
   <p>        if (tot_price &lt; 150) {</p>
   <p>            alert("계좌이체는 150원 이상 결제가 가능합니다.");</p>
   <p>            return false;</p>
   <p>        }</p>
   <p>    }</p>
   <p>}</p>
   <p><br /></p>
   <p>if (document.getElementById("od_settle_card")) {</p>
   <p>    if (document.getElementById("od_settle_card").checked) {</p>
   <p>        if (tot_price &lt; 1000) {</p>
   <p>            alert("신용카드는 1000원 이상 결제가 가능합니다.");</p>
   <p>            return false;</p>
   <p>        }</p>
   <p>    }</p>
   <p>}</p>
   <p><br /></p>
   <p>if (document.getElementById("od_settle_hp")) {</p>
   <p>    if (document.getElementById("od_settle_hp").checked) {</p>
   <p>        if (tot_price &lt; 350) {</p>
   <p>            alert("휴대폰은 350원 이상 결제가 가능합니다.");</p>
   <p>            return false;</p>
   <p>        }</p>
   <p>    }</p>
   <p>}</p>
   <p>*/</p>
   <p><br /></p>
   <p>var last_price = 15000;</p>
   <p>if (document.getElementById("od_settle_iche")) {</p>
   <p>    if (document.getElementById("od_settle_iche").checked) {</p>
   <p>        if (tot_price &lt; last_price) {</p>
   <p>            alert("계좌이체는 "+last_price+"원 이상 결제가 가능합니다.");</p>
   <p>            return false;</p>
   <p>        }</p>
   <p>    }</p>
   <p>}</p>
   <p><br /></p>
   <p>if (document.getElementById("od_settle_card")) {</p>
   <p>    if (document.getElementById("od_settle_card").checked) {</p>
   <p>        if (tot_price &lt; last_price) {</p>
   <p>            alert("신용카드는 "+last_price+"원 이상 결제가 가능합니다.");</p>
   <p>            return false;</p>
   <p>        }</p>
   <p>    }</p>
   <p>}</p>
   <p><br /></p>
   <p>if (document.getElementById("od_settle_hp")) {</p>
   <p>    if (document.getElementById("od_settle_hp").checked) {</p>
   <p>        if (tot_price &lt; last_price) {</p>
   <p>            alert("휴대폰은 "+last_price+"원 이상 결제가 가능합니다.");</p>
   <p>            return false;</p>
   <p>        }</p>
   <p>    }</p>
   <p>}</p>
   <p><br /></p>
   <p>if (document.getElementById("od_settle_bank")) {</p>
   <p>    if (document.getElementById("od_settle_bank").checked) {</p>
   <p>        if(tot_price &lt; last_price) {</p>
   <p>            alert("무통장입금은 "+last_price+"원 이상 결제가 가능합니다.");</p>
   <p>            return false;</p>
   <p>        }</p>
   <p>    }</p>
   <p>}</p>
   <p>/* 최소 결제 금액 추가 freemaster : 2020.12.15 */ </p>
   </div>
<p> </p>
<p>모바일 - /mobile/shop/orderform.sub.php - 1574</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <div>/* 최소 결제 금액 추가 freemaster : 2020.12.15 */</div>
   <p> </p>
   <div>
      <div>/*</div>
      <div>if (document.getElementById("od_settle_iche")) {</div>
      <div>    if (document.getElementById("od_settle_iche").checked) {</div>
      <div>        if (tot_price &lt; 150) {</div>
      <div>            alert("계좌이체는 150원 이상 결제가 가능합니다.");</div>
      <div>            return false;</div>
      <div>        }</div>
      <div>    }</div>
      <div>}</div>
      <div><br /></div>
      <div>if (document.getElementById("od_settle_card")) {</div>
      <div>    if (document.getElementById("od_settle_card").checked) {</div>
      <div>        if (tot_price &lt; 1000) {</div>
      <div>            alert("신용카드는 1000원 이상 결제가 가능합니다.");</div>
      <div>            return false;</div>
      <div>        }</div>
      <div>    }</div>
      <div>}</div>
      <div><br /></div>
      <div>if (document.getElementById("od_settle_hp")) {</div>
      <div>    if (document.getElementById("od_settle_hp").checked) {</div>
      <div>        if (tot_price &lt; 350) {</div>
      <div>            alert("휴대폰은 350원 이상 결제가 가능합니다.");</div>
      <div>            return false;</div>
      <div>        }</div>
      <div>    }</div>
      <div>}</div>
      <div>*/</div>
      <div><br /></div>
      <div>var last_price = 15000;</div>
      <div>if (document.getElementById("od_settle_iche")) {</div>
      <div>    if (document.getElementById("od_settle_iche").checked) {</div>
      <div>        if (tot_price &lt; last_price) {</div>
      <div>            alert("계좌이체는 "+last_price+"원 이상 결제가 가능합니다.");</div>
      <div>            return false;</div>
      <div>        }</div>
      <div>    }</div>
      <div>}</div>
      <div><br /></div>
      <div>if (document.getElementById("od_settle_card")) {</div>
      <div>    if (document.getElementById("od_settle_card").checked) {</div>
      <div>        if (tot_price &lt; last_price) {</div>
      <div>            alert("신용카드는 "+last_price+"원 이상 결제가 가능합니다.");</div>
      <div>            return false;</div>
      <div>        }</div>
      <div>    }</div>
      <div>}</div>
      <div><br /></div>
      <div>if (document.getElementById("od_settle_hp")) {</div>
      <div>    if (document.getElementById("od_settle_hp").checked) {</div>
      <div>        if (tot_price &lt; last_price) {</div>
      <div>            alert("휴대폰은 "+last_price+"원 이상 결제가 가능합니다.");</div>
      <div>            return false;</div>
      <div>        }</div>
      <div>    }</div>
      <div>}</div>
      <div><br /></div>
      <div>if (document.getElementById("od_settle_bank")) {</div>
      <div>    if (document.getElementById("od_settle_bank").checked) {</div>
      <div>        if(tot_price &lt; last_price) {</div>
      <div>            alert("무통장입금은 "+last_price+"원 이상 결제가 가능합니다.");</div>
      <div>            return false;</div>
      <div>        }</div>
      <div>    }</div>
      <div>}</div>
      <div>/* 최소 결제 금액 추가 freemaster : 2020.12.15 */</div>
      </div>
   </div>
<p> </p>
<p> </p>
<p> </p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2020-12-15T23:50:59+09:00</dc:date>
</item>


<item>
<title>[ yg5 ] 영카트 lg유플러스 결제 오류</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=74</link>
<description><![CDATA[<p>영카트에서 lg유플러스 결제시 오류가 발생하는 경우가 있었다</p>
<p>주문하기를 눌러도 아무런 반응이 없어서 확인을 해보았더니</p>
<p>plugin/lgxpay/lgdacom/ 폴더내에서</p>
<p>XPayClient.php</p>
<p>XPayClient4DB.php</p>
<p>파일내부에서  parse_ini_file() 함수를 사용하는게 있다.</p>
<p>이 함수의 오류가 발생할 때 parse_ini_string() 함수로 대처가 가능하다.</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2020-03-20T14:49:23+09:00</dc:date>
</item>


<item>
<title>[ Gnuboard ] 그누보드5 게시판 레벨보다 게시판 관리자 레벨이 낮을 때 게시판 접근안되는 문제</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=73</link>
<description><![CDATA[<p><br /></p>
<p><img src="https://funyphp.com/data/editor/1912/20191223150338_9750c6fc6286594fdb6b9633a778e94e_3gtf.png" alt="no.png" style="width:901px;height:226px;" /></p>
<p>그누보드5 게시판레벨보다 관리자레벨이 낮을 때 게시판 접근안되는 문제가 있습니다.</p>
<p>그누보드의 /bbs/board.php 파일에서 약 143줄</p>
<p>if($member['mb_level'] &lt; $board['bo_list_level']) {</p>
<p>   ------</p>
<p>}</p>
<p>이부분을 </p>
<p>if(!$is_aadmin) {</p>
<p>    if($member['mb_level'] &lt; $board['bo_list_level']) {</p>
<p>       ------</p>
<p>    }</p>
<p>}</p>
<p>이러한 형태로 변경</p>
<p> </p>
<p>/bbs/list.php 230줄 정도</p>
<p>if ($member['mb_level'] &gt;= $board['bo_write_level']) {</p>
<p>     ----------------------</p>
<p>}</p>
<p>부분을 </p>
<p>if (($member['mb_level'] &gt;= $board['bo_write_level']) || $is_admin) {</p>
<p>    -----------------------</p>
<p>}</p>
<p>이런식으로  $is_admin 추가</p>
<p> </p>
<p>/bbs/write.php 39줄</p>
<p>if ($member['mb_level'] &lt; $board['bo_write_level']) {</p>
<p>    ----</p>
<p>}</p>
<p>부분을</p>
<p>if(!$is_admin) {</p>
<p>    if ($member['mb_level'] &lt; $board['bo_write_level']) {</p>
<p>        ----</p>
<p>    }</p>
<p>}</p>
<p>다음처럼 !$is_admin으로 감싸준다</p>
<p> </p>
<p>/bbs/write.php 59줄 정도</p>
<p>if($member['mb_id'] &amp;&amp; $write['mb_id'] === $member['mb_id']) {</p>
<p>    ----</p>
<p>}</p>
<p>부분을</p>
<p>if(!$is_admin) {</p>
<p>    if($member['mb_id'] &amp;&amp; $write['mb_id'] === $member['mb_id']) {</p>
<p>        ----</p>
<p>    }</p>
<p>}</p>
<p>이렇게 !$is_admin 으로 감싸준다.</p>
<p> </p>
<p>/bbs/write.php 97줄 정도</p>
<p>if ($member['mb_level'] &lt; $board['bo_reply_level']) {</p>
<p>    ----</p>
<p>}</p>
<p>부분에 !$is_admin으로 조건문 추가</p>
<p>if(!$is_admin) {</p>
<p>    if ($member['mb_level'] &lt; $board['bo_reply_level']) {</p>
<p>        ----</p>
<p>    }</p>
<p>}</p>
<p> </p>
<p>/bbs/write_update.php 145줄</p>
<p>} else if ($member['mb_level'] &lt; $board['bo_write_level']) {</p>
<p>    if(!$is_admin) {</p>
<p>        alert('글을 쓸 권한이 없습니다.');</p>
<p>    }</p>
<p>}</p>
<p>이처럼 !$is_admin 추가</p>
<p>/bbs/write_update.php 158줄</p>
<p>if(!$is_admin) {</p>
<p>    if ($member['mb_level'] &lt; $board['bo_reply_level']) {</p>
<p>        alert('글을 답변할 권한이 없습니다.');</p>
<p>    }</p>
<p>}</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2019-12-23T15:02:17+09:00</dc:date>
</item>


<item>
<title>[ gnuboard ] 그누보드 shorturl 서버이전시 사용시 .htaccess 의 오류 방지</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=72</link>
<description><![CDATA[<p>shorturl.lib.php에서 사용하는 .htaccess 파일때문에 생기는 오류를 방지</p>
<p> </p>
<p>본인의 경우 CentOS7 minimal 버젼이 설치되었고, apm은 AAI로 설치 했다.</p>
<p>AAI = https://apachezone.com 에서 다운을 받을 수 있다.</p>
<p> </p>
<p># vim /etc/http/conf.d/계정.conf</p>
<p>변경해야 할 설정</p>
<p>&lt;/FilesMatch&gt;</p>
<p>이부분의 아래쪽에 </p>
<p>&lt;Directory "/home/계정명/public_html"&gt;</p>
<p>    Options FollowSymLinks MultiViews</p>
<p>    Allow from all</p>
<p>    Require all granted</p>
<p>    AllowOverride all</p>
<p>    Order allow,deny</p>
<p>&lt;/Directory&gt;</p>
<p>이부분을 추가해 주어야 .htaccess: Options not allowed here 이러한 오류가 발생하지 않는다.</p>
<p> </p>
<p>SSL 을 사용한다면 계정-le-ssl.conf 파일도 위를 추가해준다.</p>
<p><br /></p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2019-12-06T21:18:39+09:00</dc:date>
</item>


<item>
<title>[ gnuboard ] 그누보드 data폴더 서버이전시  설정</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=71</link>
<description><![CDATA[<p>data폴더의 퍼미션 707로 변경해준다.</p>
<p>폴더및 파일의 소유권을 계정:계정에서 apache:apache로 변경 또는 nobody:nobody로 변경해야 한다</p>
<p>본인은 CentOS7 minimal 과 AAI로 설치된 버젼이므로 apache:apache이다.</p>
<p>여기서 말하는 AAI는 https://apachezone.com 에서 배포하는  apm 이다</p>
<p><br /></p>
<p># cd /home/계정/public_html/data</p>
<p># chown -R apache:apache *</p>
<p>이렇게 변경해주면 data폴더 아래의 세션폴더아래에 세션이 생성이 되고,</p>
<p>기존에 있는 파일들도 사용이 가능해진다.</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2019-12-06T21:15:16+09:00</dc:date>
</item>


<item>
<title>[ gnuboard ] 그누보드 php 7이하에서 php7.2로 변경시 수정할 부분</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=70</link>
<description><![CDATA[<p>다음의 설정을 /theme/theme.conf.php 파일에 추가</p>
<p>상수는 사용하는데 상수가 정의되어 있지 않으면 오류가 발생하므로 빈 상수로 정의를 한다.</p>
<p>define('G5_SHOP_DIR', '');</p>
<p>define('G5_CONTENTS_DIR', '');</p>
<p>define('G5_THEME_LANG_PATH', '');</p>
<p>define('G5_LANG_PATH', '');</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2019-12-06T19:08:52+09:00</dc:date>
</item>


<item>
<title>[ gnuboard ] 그누보드용 사이트맵 ( gnuboard sitemap )</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=68</link>
<description><![CDATA[<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#289ff4;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p> &lt;?php</p>
   <p>include_once("./_common.php");</p>
   <p><br /></p>
   <p>Header("Content-type: text/xml");</p>
   <p>header("Cache-Control: no-cache, must-revalidate");</p>
   <p>header("Pragma: no-cache");</p>
   <p><br /></p>
   <p>echo "&lt;?xml version='1.0' encoding='UTF-8'?&gt;\n";</p>
   <p><br /></p>
   <p>//보여줄 게시글</p>
   <p>$rows = "150";</p>
   <p>?&gt;</p>
   <p>&lt;urlset</p>
   <p>      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"</p>
   <p>      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</p>
   <p>      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9</p>
   <p>            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"&gt;</p>
   <p>&lt;!-- created with Free Online Sitemap Generator funyphp.com --&gt;</p>
   <p> </p>
   <p>생략</p>
   </div>
<p><img src="https://funyphp.com/data/editor/1904/20190424190902_23cd7358ed17a6c201f9d2087f81d0b1_8r5b.png" alt="sitemap.png" style="width:1059px;height:770px;" /></p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2019-04-24T19:09:19+09:00</dc:date>
</item>


<item>
<title>[ php ] sir 홈페이지 처럼 사이트내 구글 검색기를 달자</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=67</link>
<description><![CDATA[<p>sir.kr 홈페이지처럼 검색페이지가 상단과 하단부분은 내홈페이지를 사용하고,</p>
<p>중간부분만 구글의 검색을 사용하게 하려고 한다.</p>
<p> </p>
<p>일단 상단의 검색부분은 검색어 입력하는 부분이</p>
<p>&lt;input type="text" name="<span style="color:#ff0000;">stx</span>"     =====&gt;     &lt;input type="text" name="<span style="color:#ff0000;">q</span>"  로 </p>
<p>변경이 되어야 한다.</p>
<p><span style="color:#ff0000;">이건 구글검색시 q로 읽어들이기 때문에 꼭 저렇게 해야된다.</span></p>
<p> </p>
<p>/bbs/search.php 페이지를 수정해줘야 한다.</p>
<p>search.php의 include_once('./_head.php'); 아래부분부터 </p>
<p>include_once($search_skin_path.'/search.skin.php'); 의 윗부분까지 모두 주석처리 해준다.</p>
<p> </p>
<p>구글검색엔진을 사용하더라도 검색어 저장을위해서 insert_popular은 넣어주자</p>
<p>include_once('./_head.php'); 의 아랫부분에 다음의 코드를 추가한다.</p>
<p>[code]</p>
<p>$stx = $_REQUEST['q'];</p>
<p>$sfl = 'wr_subject';</p>
<p><br /></p>
<p>// 검색어를 구분자로 나눈다. 여기서는 공백</p>
<p>$s = explode(' ', strip_tags($stx));</p>
<p>if( count($s) &gt; 1 ){</p>
<p>    $s = array_slice($s, 0, 2);</p>
<p>    $stx = implode(' ', $s);</p>
<p>}</p>
<p>for ($i=0; $i&lt;count($s); $i++) {</p>
<p>    if (trim($s[$i]) == '') continue;</p>
<p>    $search_str = $s[$i];</p>
<p>    insert_popular($sfl, $search_str);</p>
<p>}</p>
<p>[/code] </p>
<p> </p>
<p>/theme/테마/skin/search/검색스킨/search.skin.php 페이지에서 5째줄까지를 제외한 아랫부분을 모두 주석처리한다.</p>
<p>그리고 다음의 코드를 넣는다.</p>
<p>[code]</p>
<p>&lt;div class="container"&gt;</p>
<p>    &lt;div class="row"&gt;</p>
<p>        &lt;div class="span12" style="height:40px;font-size:20px;padding:15px;color:#fff;"&gt;</p>
<p>            검색어 : &lt;?php echo $_REQUEST['q'];?&gt;</p>
<p>        &lt;/div&gt;</p>
<p>        &lt;div class="span12"&gt;</p>
<p>이부분에 코드가져오기를 통해서 설정된 코드값을 이부분에 넣어준다.</p>
<p>대략</p>
<p>&lt;script&gt;</p>
<p>  (function() {</p>
<p>    var cx =</p>
<p><span style="white-space:pre;"></span>~~~~~</p>
<p><span style="white-space:pre;"></span>~~~~~</p>
<p>  })();</p>
<p>&lt;/script&gt;</p>
<p>&lt;gcse:searchresults-only&gt;&lt;/gcse:searchresults-only&gt;</p>
<p>이러한 형태로 되어있다.</p>
<p> </p>
<p>        &lt;/div&gt;</p>
<p>    &lt;/div&gt;</p>
<p>&lt;/div&gt;</p>
<p>[/code]</p>
<p> </p>
<p>https://cse.google.com/cse/ 페이지로 이동하여 구글 검색부분을 설정한다.</p>
<p>기본사항을 적고 </p>
<p><img src="https://funyphp.com/data/editor/1812/20181206165124_2bc43e2132cab88b015ca076f40a686b_930q.png" alt="google_search1.png" style="width:814px;height:987px;" /></p>
<p>검색창 디자인부분으로 이동해서</p>
<p><img src="https://funyphp.com/data/editor/1812/20181206165154_2bc43e2132cab88b015ca076f40a686b_1rya.png" alt="google_search2.png" style="height:831px;" /></p>
<p>다음처럼 디자인을 선택하고 저장을 한다.</p>
<p> </p>
<p>설정부분에 있는  검색엔진 ID값은 search.skin</p>
<p> </p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2018-12-06T16:59:58+09:00</dc:date>
</item>


<item>
<title>그누보드 최고관리자 비밀번호 까먹었을 때</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=66</link>
<description><![CDATA[<p>그누보드5 /bbs/login_check.php 32줄 부분</p>
<p>if (!$is_social_password_check &amp;&amp; (!$mb['mb_id'] || !check_password($mb_password, $mb['mb_password'])) ) {</p>
<p>    alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');</p>
<p>}</p>
<p>이렇게 된 부분에서 </p>
<p>alert("~~~~~  부분을</p>
<p>//alert("~~~~ 이렇게 주석처리 해주신 다음에 로그인 페이지로 이동하셔서</p>
<p> </p>
<p>그누보드4 /bbs/login_check.php 25줄</p>
<p>if (!$mb[mb_id] || (sql_password($mb_password) !== $mb[mb_password])) {</p>
<p>    alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");</p>
<p>}</p>
<p></p>
<p>이렇게 된 부분에서 </p>
<p>alert("~~~~~  부분을</p>
<p>//alert("~~~~~ 이렇게 주석처리 해주신 다음에 로그인 페이지로 이동하셔서 </p>
<p> </p>
<p>ID : 관리자 또는 해당아이디</p>
<p>PW : 아무거나</p>
<p>입력하시면 로그인이 됩니다.</p>
<p>로그인이 되었으면 관리자 &gt; 회원관리 &gt; 해당회원의 정보수정 페이지로 이동하시고</p>
<p>비밀번호를 변경하고 저장을 눌러주시면 변경 비밀번호로 로그인이 가능해집니다.</p>
<p><br /></p>
<p>이렇게 비밀번호를 변경하였다면</p>
<p>/bbs/login_check.php 32부분을 원상태로 복구 시키고 저장하는 것을 잊지마세요.</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2018-12-04T15:29:14+09:00</dc:date>
</item>


<item>
<title>다운로드파일이 여러개 일 때 각 번호마다 다운로드 포인트를 적용하기</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=65</link>
<description><![CDATA[<p>본 내용은 그누보드 5.3.1.6 을 기본으로 하였습니다.</p>
<p>일단. 그누보드 또는 영카트 5.3.1.6 이전버젼이라면</p>
<p>download.php 파일만 5.3.1.6이상의 버젼으로 업데이트 시키세요</p>
<p> </p>
<p><img src="http://funyphp.com/data/editor/1811/20181112161847_e08f273cf13e8e4f345150dbcbe54069_18m4.png" alt="eachother.png" style="width:849px;height:184px;" /></p>
<p> </p>
<p>download.php 51줄에 다음을 추가하면 된다.</p>
<p>[code]</p>
<p>//53줄 $ss_name = 'ss_down_'.$bo_table.'_'.$wr_id;</p>
<p>$ss_name = 'ss_down_'.$bo_table.'_'.$wr_id.'_'.$no;</p>
<p> </p>
<p>//67줄 insert_point($member['mb_id'], $board['bo_download_point'], "{$board['bo_subject']} $wr_id 파일 다운로드", $bo_table, $wr_id, "다운로드");</p>
<p>insert_point($member['mb_id'], $board['bo_download_point'], "{$board['bo_subject']} $wr_id 파일의 $no 다운로드", $bo_table, $wr_id.'_'.$no, "다운로드");</p>
<p>[/code]</p>
<p>다음처럼 수정하면 기존 wr_id로 저장이 되던 부분이 wr_id &amp;&amp; no 까지 적용이 되어 포인트나 저장이 되게된다.</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2018-11-12T16:18:58+09:00</dc:date>
</item>


<item>
<title>kcp 본인인증 성별,생년월일 추가하기</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=64</link>
<description><![CDATA[<p><img src="http://funyphp.com/data/editor/1811/20181102182013_79640b9f61421f8f0c864d2f626d137a_u8gm.png" alt="kcp1234.png" style="width:705px;height:128px;" /></p>
<p> </p>
<p>/plugin/kcpcert/kcpcert_result.php 211줄</p>
<p>인증정보 4가지만 존재합니다.</p>
<p>$opener.$("input[name=mb_birth]").val("&lt;?php echo $birth_day; ?&gt;").attr("readonly", true);</p>
<p>$opener.$("input[name=mb_sex]").val("&lt;?php echo ($sex_code=="01")?"M":"F"; ?&gt;").attr("readonly", true);</p>
<p>이 두개를 추가하고</p>
<p><br /></p>
<p>/theme/해당테마/skin/member/선택스킨/member/register_form.skin.php 페이지의</p>
<p>생년월일을 &lt;input type="text" name="mb_birth" value="&lt;?php echo $member['mb_bireh'];?&gt;"&gt;</p>
<p>성별을 &lt;input type="text" name="mb_sex" value="&lt;?php echo $member['mb_sex'];?&gt;"&gt;</p>
<p><br /></p>
<p>대충이런식으로 변경하면 될 듯 하다</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2018-11-02T18:21:13+09:00</dc:date>
</item>


<item>
<title>함수 is_admin( ) 파일 경로</title>
<link>https://www.funyphp.com/bbs/board.php?bo_table=gnuboard&amp;amp;wr_id=63</link>
<description><![CDATA[<p><img src="http://funyphp.com/data/editor/1811/20181102151224_79640b9f61421f8f0c864d2f626d137a_bhez.png" alt="is_admin.png" style="width:624px;height:219px;" /></p>
<p>is_admin( )  함수정의</p>
<p>/lib/common.lib.php 793줄</p>
<p>사용처</p>
<p>/common.php 426줄</p>
<p>/bbs/password_lost2.php 28줄</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2018-11-02T15:12:28+09:00</dc:date>
</item>

</channel>
</rss>
