Search Results for '프로그래밍/PHP'


67 posts related to '프로그래밍/PHP'

  1. 2023/07/27 그누보드 내용관리 PHP 파일 include 방법
  2. 2023/04/04 pp_cli_x64 바이너리 오류에 대한 또다른 해결방법
  3. 2020/06/15 그누보드 스마트에디터 이미지 첨부 상대경로 변경
  4. 2019/10/30 PHP date 함수에서 사용할 수있는 포맷문자열
  5. 2019/08/29 그누보드 각 게시판 글 수 구하기
  6. 2019/04/12 숫자를 한글로 금액 단위 사용시
  7. 2019/04/12 남은 일수 체크
  8. 2019/04/01 값이 숫자인지 확인, Is_numeric() 함수
  9. 2019/03/21 php substr 함수 사용법
  10. 2019/03/20 네아로 아이디만 로그인 유지 아닐경우 세션 날려버리기 로그아웃 하기
  11. 2019/03/11 로그인후 5분동안 사용없으면 로그아웃 하기 - 그누보드
  12. 2019/03/11 로그인후 5분동안 사용없으면 로그아웃 하기 - 그누보드
  13. 2018/08/07 네이버 openapi 사용하여 쇼핑검색 만들기
  14. 2018/08/03 생성함수 - 배열 중간에 값 제거
  15. 2018/08/03 생성함수 - 서브도메인 가져오기
  16. 2018/08/03 도메인 정보를 확인 할 때 www를 제외하기
  17. 2018/08/03 curl 이용하여 파싱하기
  18. 2018/08/03 모바일일때만 보이고 안보이고
  19. 2018/08/03 PHP 문자열 자르기, substr()
  20. 2018/08/03 PHP ucfirst - 문자열의 첫 번째 문자를 대문자로 만듭니다.
  21. 2018/08/03 PHP 배열 내장함수 - array_change_key_case
  22. 2018/07/25 이름 마지막 한자리 별표 처리
  23. 2018/07/25 랜덤 이름 생성기
  24. 2018/07/25 다음 실시간 검색어 10개 추출
  25. 2018/07/25 네이버 실시간 검색어 20개 추출
  26. 2017/03/25 그누보드5 회원가입 IP 가입 제한 방법
  27. 2017/03/22 PHP | 웹 url에 www가 붙지 않은 주소에 www 붙이기 (update. 20 2
  28. 2017/02/11 오유 기본 파싱문입니다.
  29. 2017/02/11 배너 랜덤추출 스크립트
  30. 2017/02/10 그누보드 게시판 통합후 글 번호 날짜순으로 정렬하기
그누보드 사용하다보면 page 파일을 불러오면  짦은 주소 기능을 사용 할수 없다  Rewrite 를 사용하면 가능하지만 이후 SiteMap 을 생성 할때 불편하다 

그래서 내용 관리 파일에서 수정하는 방법이 있다

/skin/content/basic/content.skin.php 열어서 

    <div id="ctt_con">
        <?php echo $str; ?>
    </div>

위 내용을 아래처럼 수정하면된다.

    <div id="ctt_con">
        <?php //echo $str; ?>
        <?php @include_once($co['co_content']); ?>
    </div>

하지만 문제가 있다 보안상 사실 코드에 승인한 파일명만 처리 하도록 하면 더 좋지만 불편하다 그래서 아래처럼 수정 하였다.

<div id="ctt_con">
    <?php
    // 'co_content' 키가 존재하고 빈 문자열이 아닌지 확인
    if (isset($co['co_content']) && is_string($co['co_content']) && trim($co['co_content']) !== '') {
        // 'co_content' 값의 유효성을 검사하고 디렉토리 트래버설을 방지하기 위해 basename() 사용
        $coContent = basename($co['co_content']);
        $coContent = str_replace(array('/', '\\'), '', $coContent);
        // 'co_content' 값으로 사용되는 파일의 디렉토리 경로를 정의
        $contentDirectory = G5_THEME_PATH . '/contents/';
        // 'co_content' 값으로 사용되는 파일의 전체 경로를 정의
        $contentFilePath = $contentDirectory . $coContent;
        // 파일이 존재하는지 확인하고 포함하여 실행
        if (file_exists($contentFilePath)) {
            // 보안상 이유로 include_once 대신 include를 사용하는 것이 좋습니다.
            include $contentFilePath;
        } else {
            // 파일이 존재하지 않을 경우 메시지 출력
            echo '컨텐츠를 찾을 수 없습니다.';
        }
    } else {
        // 'co_content' 키가 존재하지 않거나 비어있는 경우 메시지 출력
        echo '컨텐츠를 사용할 수 없습니다.';
    }
    ?>
</div>

 위  코드는 테마 폴더 아래 contents 폴더에 있는 경로만 실행 할수 있도록 하였다.  이제 내용관리에 파일 경로만 넣고 사용하면 된다. 

예 ) ../theme/basic/page/page.php 

작성할때 주의 사항 html 모드에서 작성하자 필요 없는 테그가  가는걸 방지 하고자 한다.

잘 작동한다. 

오류가 나오면 그건 불러오는 php 파일을  수정하자  그것도 싫다면 아래 처럼 @ 처리 하면 된다. 

<div id="ctt_con">
    <?php
    // 'co_content' 키가 존재하고 빈 문자열이 아닌지 확인
    if (isset($co['co_content']) && is_string($co['co_content']) && trim($co['co_content']) !== '') {
        // 'co_content' 값의 유효성을 검사하고 디렉토리 트래버설을 방지하기 위해 basename() 사용
        $coContent = basename($co['co_content']);
        $coContent = str_replace(array('/', '\\'), '', $coContent);
        // 'co_content' 값으로 사용되는 파일의 디렉토리 경로를 정의
        $contentDirectory = G5_THEME_PATH . '/contents/';
        // 'co_content' 값으로 사용되는 파일의 전체 경로를 정의
        $contentFilePath = $contentDirectory . $coContent;
        // 파일이 존재하는지 확인하고 포함하여 실행
        @include $contentFilePath; // 오류를 무시하고 파일을 포함합니다.
    } else {
        // 'co_content' 키가 존재하지 않거나 비어있는 경우 메시지 출력
        echo '컨텐츠를 사용할 수 없습니다.';
    }
    ?>
</div>


이상
2023/07/27 15:08 2023/07/27 15:08
KCP 결제 모듈을 달면서 [ pp_cli_x64 바이너리 오류에 대한 또다른 해결방법 ] 오류가 뜬다 바이너리 타입으로 업로드 하면 퍼미션 조종을 하라고 하고 다시 퍼미션 조정을 하면 위 오류가 동일하게 나타난다. 

확인 결과 

php.ini 파일에 disable_functions 내용을 보면 ,exec 값이 있다 이 값을 제거 하면 정상 작동 한다.

그누보드 영카트 를 사용하고 위 오류가 날경우 그리고 ini 파일을 수정 할수 없을 경우 adm/admin/shop_admin/configform.php 파일에

echo module_exec_check(G5_SHOP_PATH.$exe, 'pp_cli');

위 내용을 주석 처리 하여도 해결 된다. 

ini 파일에 exec 값을 제거 하면 보안에 취약하다
2023/04/04 21:21 2023/04/04 21:21
그누보드 운영중 도메인 변경이나 멀티 도메인을 사용할 경우 검색엔진 에서 불이익을 받게 된다. 

01. 스마트 에디터 

/plugin/editor/smarteditor2/photo_uploader/popup/php/index.php

위 파일을 열어서


$data_url = G5_DATA_URL.'/editor/'.$ym.'/';
//변경전
$data_url = '/'.G5_DATA_DIR.'/editor/'.$ym.'/';
//변경후

위 처럼 수정하면 해결할수 있다.

02. 채디터  Cheditor5

/plugin/editor/cheditor5/imageUpload/config.php

위 파일을 열어서
$data_url = G5_DATA_URL.'/'.G5_EDITOR_DIR.'/'.$ym;
//변경전
$data_url = '/'.G5_DATA_DIR.'/editor/'.$ym.'/';
//변경후


위 경우 신규 이미지 업로드 경우만 반여이 된다. 

lib/common.lib.php 의 conv_content 함수를 수정하는 방법도 가능하다.
이는 https://a.com  을 https://b.com 으로 도메인을 변경하는 편법이다.
// 변경전
function conv_content($content, $html, $filter=true)
{
    global $config, $board;
 
// 변경후
function conv_content($content, $html, $filter=true)
{
    global $config, $board;
    $content = str_replace('기존도메인', '현재도메인', $content);

위 방법으로 처리할 경우 미비하지만 속도가 느릴것으로 생각된다.
2020/06/15 10:08 2020/06/15 10:08
a : "am" 또는 "pm"
A : "AM" 또는 "PM"
d : 두자리로 표현되는 날짜, 즉 "01"~"31"
D : 세글자로 표현되는 요일, 즉 "Fri"
F : 월을 긴 문장으로 나타냅니다. 즉 "January"
h : 시간을 12시간 단위로 나타냅니다. "01"~"12"
H : 시간을 24시간 단위로 나타냅니다.
g : 시간을 12시간 단위로 0 없이 나타냅니다. "1"~"12"
G : 시간을 24시간 단위로 0 없이 나타냅니다. "0"~"24"
i : 분을 나타냅니다. "00"~"59"
j : 날짜를 0 없이 나타냅니다. "1"~"31"
l : (L의 소문자)요일을 나타냅니다. "Friday"
L : 윤년인지의 여부를 나타냅니다. "0" 또는 "1"
m : 달을 나타냅니다. "01"~"12"
n : 0 없이 달을 나타냅니다. "1"~"12"
M : 3글자로 달을 나타냅니다. "Jan"
s : 초를 나타냅니다. "00"~"59"
S : 영어에서 순서를 나타내는 2글자로 된 접미사; "th", "nd"
t : 주어진 달의 날 수; 즉 "28"~"31"
U : 기준시점(GMT 1970년 1월1일 00:00:00)으로부터 지난 시간을 초로 표시
w : 요일을 숫자로 표시합니다. 즉 "0"(일요일) ~ "6"(토요일)
Y : 4글자로 연도표시, "1999"
y : 2글자로 연도표시, "99"
z : 날짜를 표시, "0"~"365"
Z : 지역간의 시간편차를 초단위로 표시, 즉 "-43200"~"43200"
2019/10/30 15:06 2019/10/30 15:06
그누보드 각 게시판 글 수 구하기
<?php
$row = sql_fetch(" select bo_count_write from g5_board where bo_table='free' ");
echo $row[bo_count_write];
?>
2019/08/29 10:58 2019/08/29 10:58
$pricem=$price_sum_tot; 
$trans_kor=array("","일","이","삼","사","오","육","칠","팔","구"); 
$price_unit=array("","십","백","천","만","십","백","천","억","십","백","천","조","십","백","천"); 
$valuecode=array("","만","억","조"); 
$value=strlen($pricem); 
$k=0; 
for($i=$value;$i>0;$i--){ 
    $vv=""; 
    $vc=substr($pricem,$k,1); 
    $vt=$trans_kor[$vc]; 
    $k++; 
    if($i%5 ==0){ 
        $vv=$valuecode[$i/5];
    } else { 
        if($vc) $vv=$price_unit[$i-1];
    } 
    
    $vr=$vr.$vt.$vv; 
}
2019/04/12 12:02 2019/04/12 12:02
// 선택 옵션에서 숫자만
$use_io_days =  preg_replace("/[^0-9]*/s", "", $row[io_id]);
 
​// 해당일만큼 증가 후 종료일로 지정 - 현재일과 차이
$use_date =  (strtotime(date('Y-m-d', strtotime("+".$use_io_days."day", strtotime($row['pay_datetime'])))) - strtotime(G5_TIME_YMD)) / 86400;  //  G5_TIME_YMD​
2019/04/12 12:00 2019/04/12 12:00
변수 $sam를 is_numeric() 함수를 이용해 숫자형 데이터인 경우 true를 아닌 경우에는 false를 반환

<?php
  $sam="12345";
  // 숫자 타입의 데이터를 선언
  if (is_number($sam)) {
    echo '숫자 입니다.';
  }
  else {
    echo '문자 입니다.';
  }
?>
결과는 (숫자 입니다)
2019/04/01 11:33 2019/04/01 11:33
$mb_id=substr("abcd", 0, 3);
echo("'$mb_id'");
$mb_id=substr("abcd", 2, 3);
echo("'$mb_id'");
$mb_id=substr("abcd", -1);
echo("'$mb_id'");
 
결과 'abc'  'cde'  'd' 로 나온다.
2019/03/21 13:07 2019/03/21 13:07
<?php 
@session_save_path($DOCUMENT_ROOT."/data/session");
@session_start();
if(substr($member[mb_id], 0, 2) != 'n_') {
    unset( $_SESSION["ss_mb_id"] );
    echo "<script>";
    echo "alert('네이버 아이디로 로그인해 주세요.');";
    echo "history.go(-1);";
    echo "</script>";
    exit;
}
?>

그누보드 기반으로 제작 할때 사용하면 됩니다.


2019/03/20 21:50 2019/03/20 21:50
<? 
/////////////////////5분 후 자동 로그아웃 ///////////// 
if($member[mb_id]) 
    $checktime = mktime(date("H"),date("i")-30,date("s"),date("m"),date("d"),date("Y")); // 시간지정 
    if($_SESSION['ss_login_time'] && ($_SESSION['ss_login_time'] < $checktime)) { 
        // 페이지를 연 시점이 되어있고, 저장된 시간이 특정시간 이전일때 
        goto_url($g4['bbs_path']."/logout.php",$urlencode); // 강제 로그아웃 
    } else { 
        // 로그인 타임(페이지를 연 시간)이 없거나, 특정시간을 넘기지 않은 경우는 시간재저장 
        $login_time = mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")); // 현재시간 저장 
        set_session("ss_login_time", $login_time); 
    } 
?> 
2019/03/11 14:14 2019/03/11 14:14
<? 
/////////////////////5분 후 자동 로그아웃 ///////////// 
if($member[mb_id]) 
    $checktime = mktime(date("H"),date("i")-30,date("s"),date("m"),date("d"),date("Y")); // 시간지정 
    if($_SESSION['ss_login_time'] && ($_SESSION['ss_login_time'] < $checktime)) { 
        // 페이지를 연 시점이 되어있고, 저장된 시간이 특정시간 이전일때 
        goto_url($g4['bbs_path']."/logout.php",$urlencode); // 강제 로그아웃 
    } else { 
        // 로그인 타임(페이지를 연 시간)이 없거나, 특정시간을 넘기지 않은 경우는 시간재저장 
        $login_time = mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")); // 현재시간 저장 
        set_session("ss_login_time", $login_time); 
    } 
?> 
2019/03/11 14:14 2019/03/11 14:14
데모 : https://youngsam.net//PHP/N/naver_shop.php

파일명 :naver_shop.php

================================================


<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="nofollow" target="_blank"> 
​ 
    <meta charset="UTF-8"> 
    
        <div class="container" > 
<div class="row" style="padding:20px;"> 
<div class="panel panel-default"> 
  <div class="panel-heading"><h3><b>네이버쇼핑 검색</b></h3></div> 
  <div class="panel-body"> 
<form action="naver_shop_data.php" method="post"> 
<div class="col-lg-6"> 
    <div class="input-group"> 
      <input type="text" class="form-control" type="text" name="aa" required placeholder="[나노엔] 이라고 검색"> 
      <span class="input-group-btn"> 
        <button type="submit" class="btn btn-default">검색</button> 
      </span> 
    </div> 
</div> 
</form>  
 </div> 
 </div> 
 </div> 
 </div>



파일명 : naver_shop_data.php

================================================
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> 
  
    <meta charset="UTF-8"> 
    
    <script type="text/javascript"> 
  function goBack(){ 
      window.history.back(); 
  } 
</script> 
    
        <div class="container" > 
<div class="row" style="padding:20px;"> 
<button type="submit" class="btn btn-default" value="다시검색" onclick="goBack();" >다시검색</button> 
<p> 
<?php 
@header("Cache-Control:no-cache, must-revalidate"); 
@header("Content-Type: text/html; charset=utf-8"); 
class NaverProxy { 
  public function queryNaver($query, $target) { 
  $client_id = "client_id  값 넣기"; 
  $client_secret = "client_secret 값 넣기"; 
 $query=urlencode($_POST['aa']); 
 $target="shop"; 
 $url = "https://openapi.naver.com/v1/search/shop.xml"; 
 $url = sprintf("%s?query=%s&display=50&start=1&sort=sim&target=shop", $url, $query); 
 $is_post = true; 
 $ch = curl_init(); 
 curl_setopt($ch, CURLOPT_URL, $url); 
// curl_setopt($ch, CURLOPT_GET, $is_post); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
 $headers = array(); 
 $headers[] = "X-Naver-Client-Id: ".$client_id; 
 $headers[] = "X-Naver-Client-Secret: ".$client_secret; 
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
 $data = curl_exec ($ch); 
 curl_close ($ch); 
 return $data; 
  } 
$naverproxy = new NaverProxy(); 
// XML파일에서 원하는 항목만 추출하기 http://search.naver.comNaver Search ResultThu, 25 Jan 2018 13:05:39 +09001764410110 
//echo $naverproxy -> queryNaver($_POST['query'], $_POST['target']); 
$xmlstring = $naverproxy -> queryNaver($_POST['query'], $_POST['target']); 
$xml = simplexml_load_string($xmlstring) or die("에러: 객체를 생성할 수 없습니다"); 
$items = $xml->channel->item; 
if(!empty($items)){ 
foreach($items as $item){  
    echo ' 
    <div class="panel panel-default"> 
  <div class="panel-heading"><h3><b><a href="' . $item->link . '" target="_blank">'. $item->title . ' </a></b></h3></div> 
  <br> 
  <div class="row"> 
  <div class="col-md-4" style="text-align: center;"> <a href="' . $item->link . '" target="_blank"><img src='. $item->image . ' width="200px" height="200px" /></a></div> 
  <div class="col-md-8"> <h4>쇼핑몰: <a href="' . $item->link . '">'.$item->mallName. '</a></h4> 
      <!--<h4>아이디: '. $item->productId . '</h4>--> 
      <h4>최저가: '. $item->lprice. '원</h4> 
      <h4>상품ID: '. $item->productId. '</h4> 
      <h4>가격: '. $item->lprice. '원</h4> 
      </div> 
</div> 
              <br> 
              </div> 
              '      
      ; 
                      
?> 
<button type="submit" class="btn btn-default" value="다시검색" onclick="goBack();" >다시검색</button> 
  </div> 
</div>



2018/08/07 14:14 2018/08/07 14:14
가끔 배열을 사용하다보면 기존배열의 중간이나 특정 사이에 값을 제거해야 할 경우가 생깁니다.
그럴경우에는 아래의 함수를 이용해서 원하는 값을 제거 할 수 있습니다.

<?php
// 배열, 삭제할 값
function arr_del($list_arr, $del_num) {
$key = array_search($del_num, $list_arr); //배열에 키를 알아오고
array_splice($list_arr, $key, 1); // 배열에서 위에서 받아온 키를 삭제
return $list_arr;
}
$arr = array('AAA','BBB','CCC','DDD','EEE');
$result_arr = arr_del($arr, 'CCC'); // 해당 배열에서 CCC를 제거
print_r($result_arr);
?>

결과 

Array ( [0] => AAA [1] => BBB [2] => DDD [3] => EEE )
2018/08/03 19:31 2018/08/03 19:31
<?php
function get_sub_domain(){
preg_match("/(([a-z0-9\-]+\.)*)([a-z0-9\-]+)\.([a-z]{3,4}|[a-z]{2,3}\.[a-z]{2})(\:[0-9]+)?$/", $_SERVER['HTTP_HOST'], $matches);
$sub_domain = null;
if($matches[1]) {
$sub_domain = substr($matches[1], 0, -1);
}
return $sub_domain;
}
?>
2018/08/03 19:30 2018/08/03 19:30
<?php
// 도메인 정보를 확인 할때 www를 제외하고 체크하자.
function get_server_name() {
    return preg_replace('/^(www\.)/',"",$_SERVER['SERVER_NAME']);
}
$current_server_name = get_server_name();
echo $current_server_name;
?>
2018/08/03 19:16 2018/08/03 19:16
php에서는 html을 파싱하기 위해서 simple_html_dom 플러그인을 많이 사용되고 있습니다.
그러나 simple_html_dom을 이용하여 파싱을 할수 없거나 자바스크립트로 인해 원하는 결과를 얻어 올수 없을때가 있습니다. 
이럴때 curl 을 이용한 파싱이 도움이 됩니다. 
$url = "http://www.example.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
echo $output;
2018/08/03 12:00 2018/08/03 12:00
<?php // 모바일 PC 확인  함수 추가
function MobileCheck() { 
    global $HTTP_USER_AGENT; 
    $MobileArray  = array("iphone","lgtelecom","skt","mobile","samsung","nokia","blackberry","android","android","sony","phone");
    $checkCount = 0; 
        for($i=0; $i<sizeof($MobileArray); $i++){ 
            if(preg_match("/$MobileArray[$i]/", strtolower($HTTP_USER_AGENT))){ $checkCount++; break; } 
        } 
   return ($checkCount >= 1) ? "Mobile" : "Computer"; 
}
?>


<?php if(MobileCheck() != "Mobile"){ // 모바일 PC 함수 사용?>
<?php
      include 'a.php';
    ?>
<?php } ?>

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

!=  / ==

수정하면 변경 할수 있습니다. 
2018/08/03 11:44 2018/08/03 11:44
PHP 내장함수

<?php
$rest = substr("abcdef", 0, -1);  // returns "abcde"
$rest = substr("abcdef", 2, -1);  // returns "cde"
$rest = substr("abcdef", 4, -4);  // returns false
$rest = substr("abcdef", -3, -1); // returns "de"
?>
2018/08/03 11:40 2018/08/03 11:40
ucfirst - 문자열의 첫 번째 문자를 대문자로 만듭니다.
설명 ¶
문자열 ucfirst ( 문자열 $str )
str문자가 영문자이면 대문자 가 된 첫 문자를 포함한 문자열을 반환합니다 .
'알파벳'은 현재 로켈에 의해 결정됩니다. 예를 들어, 기본 "C"로케일에서 umlaut-a (ä)와 같은 문자는 변환되지 않습니다.
매개 변수 ¶
str
입력 문자열.
반환 값 ¶
결과 문자열을 반환합니다.
예 ¶
Example # 1 ucfirst () 예제
<?php
$foo = 'hello world!';
$foo = ucfirst($foo);             // Hello world!
$bar = 'HELLO WORLD!';
$bar = ucfirst($bar);             // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!
?>
2018/08/03 11:09 2018/08/03 11:09
array_change_key_case
array array_change_key_case ( array $array [, int $case = CASE_LOWER ] )
input에서 모든 키를 소문자나 대문자로 바꾼 배열을 반환
다차원 배열일때 1차의 키만 변환
주의) 변환 후 동일한 키가 존재할때는 뒤에 값이 앞에 값을 덮어씌움
input - 작업할 배열
case - CASE_UPPER나 CASE_LOWER, 기본값은 CASE_LOWER
```php
// 기본 사용법
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
/*
Array
(
    [FIRST] => 1
    [SECOND] => 4
)
*/
```
```php
// 변환후 중복키 발생
$input_array = array("FirSt" => 1, "SecOnd" => 4, "First" => 5, "SecONd" => 6);
print_r(array_change_key_case($input_array, CASE_UPPER));
/*
Array
(
    [FIRST] => 5
    [SECOND] => 6
)
*/
```
```php
// 다차원 배열, 1차의 키만 변경
$input_array = array(
    'a' => array("FirSt" => 1, "SecOnd" => 4), 
    'b' => array("Third" => 1, "foUrth" => 8)
);
print_r(array_change_key_case($input_array, CASE_UPPER));
/*
Array
(
    [A] => Array
        (
            [FirSt] => 1
            [SecOnd] => 4
        )
    [B] => Array
        (
            [Third] => 1
            [foUrth] => 8
        )
)
*/
```
2018/08/03 10:54 2018/08/03 10:54
$mb_name = "김카누";
mb_substr($mb_name, 0, mb_strlen($mb_name)-1, 'utf-8')."*";
2018/07/25 21:01 2018/07/25 21:01
홈페이지 오픈하면 글이 하나도 없죠 . 이럴때 이름 생각하기 힘들어요 그래서 ..

$One = array("강", "조", "전", "송", "최", "박", "김", "한", "정", "유", "이", "백", "편", "위", "피", "구", "승", "홍", "민", "성", "인", "차", "윤", "옥", "안", "양", "육", "변", "공", "원", "연", "우", "당", "주", "문", "현", "견", "신", "나", "노", "임", "온", "배", "추", "국", "오", "손", "팽", "좌", "상", "빈", "예", "방", "어", "선", "진", "화", "장", "감", "호", "도", "천", "소", "석", "태", "마", "기", "서", "봉", "음", "탁", "권", "목", "제", "왕", "엄", "부", "채", "형", "단", "맹", "함", "고", "모", "계", "두", "곽", "허", "설", "반", "류", "지", "명", "복", "황", "사", "시", "심", "창", "간", "여", "순", "경", "남", "범", "갈", "하", "길");
$Two = array("도", "규", "연", "백", "하", "태", "경", "민", "주", "윤", "예", "운", "성", "호", "동", "덕", "대", "노", "다", "보", "시", "선", "상", "솔", "범", "귀", "서", "형", "희", "재", "순", "수", "필", "채", "장", "기", "인", "이", "두", "진", "무", "유", "송", "청", "나", "은", "정", "항", "지", "해", "아", "영", "남", "창", "슬", "임", "일", "가", "자", "석", "신", "명", "단", "국", "한", "율", "부", "우", "차", "옥", "병", "소", "효", "감", "판", "사", "문", "내", "세", "의", "원", "손", "봉", "초", "리", "란", "혜", "중", "방", "건", "강", "종", "준", "철", "헌", "현", "낙", "제", "미", "달", "금", "래", "애", "춘", "로", "표", "양", "비", "본", "충", "찬", "라", "군", "배", "향", "고", "훈", "승", "추", "숙", "화", "조", "천", "어", "교", "산", "길", "근", "포");
$Three = array("윤", "광", "중", "준", "일", "희", "미", "채", "용", "석", "빈", "오", "훈", "운", "원", "우", "호", "규", "수", "진", "람", "화", "이", "온", "길", "연", "영", "란", "철", "완", "환", "범", "성", "혁", "옥", "하", "림", "경", "정", "형", "해", "현", "은", "숙", "지", "선", "만", "기", "서", "천", "탁", "배", "라", "인", "린", "엽", "로", "임", "심", "찬", "혜", "홍", "순", "섭", "겸", "율", "백", "민", "주", "솔", "열", "두", "거", "상", "리", "태", "령", "아", "효", "학", "재", "헌", "랑", "신", "모", "의", "승", "실", "률", "구", "도", "예", "래", "애", "복", "식", "나", "남", "익", "균", "융", "창", "필", "근", "님", "조", "언", "룡", "웅", "문", "권", "건", "월", "협", "택", "명", "금", "걸", "삼", "유", "한", "욱", "교");
echo $One[rand(0, count($One)-1)];
echo $Two[rand(0, count($Two)-1)];
echo $Three[rand(0, count($Three)-1)];


단.. 이상한 이름이 나올 수도 있습니다.
예로 만두만, 함주라, 황산길 등등..
 
유령 유저 만들기 위해 간단하게 만들었습니다.
2018/07/25 20:54 2018/07/25 20:54
 
function DaumKeyWord(){
    $Curl = curl_init();
    curl_setopt($Curl, CURLOPT_URL, "https://www.daum.net/");
    curl_setopt($Curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($Curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    $Result = curl_exec($Curl);
    $Rand[0] = explode("<span class=\"txt_issue\">", $Result);
    for($i=1; $i < count($Rand[0]); $i++){
    $Rand[1] = explode("</span>", $Rand[0][$i]);
        $ReturnData = trim(strip_tags($Rand[1][0]));
        if($ReturnData){
            $ReturnArray[] = $ReturnData;
        }
    }
    $ReturnArray = array_unique($ReturnArray);
    foreach($ReturnArray as $ReturnArray) $Return[] = $ReturnArray;
    return $Return;
}
$DaumKeyWord = DaumKeyWord();
print_r($DaumKeyWord);
 
2018/07/25 20:49 2018/07/25 20:49
 
function NaverKeyWord(){
    $Curl = curl_init();
    curl_setopt($Curl, CURLOPT_URL, "https://datalab.naver.com/keyword/realtimeList.naver?where=main");
    curl_setopt($Curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($Curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    $Result = curl_exec($Curl);
    $RandList = explode("<ul class=\"rank_list\">", $Result);
    $RandList = explode("</ul>", $RandList[1]);
    $Rand[0] = explode("<span class=\"title\">", $RandList[0]);
    for($i=1; $i < count($Rand[0]); $i++){
    $Rand[1] = explode("</span>", $Rand[0][$i]);
        $ReturnData = trim(strip_tags($Rand[1][0]));
        if($ReturnData){
            $Return[] = $ReturnData;
        }
    }
    return $Return;
}
$NaverKeyWord = NaverKeyWord();
print_r($NaverKeyWord);
 
2018/07/25 20:48 2018/07/25 20:48
bbs/register_form_update.php​ 열어서
149번 라인    if ($msg = exist_mb_email($mb_email, $mb_id))   alert($msg, "", true, true);
여기 다음에 넣으시면 되겠네요 ^^

==================================== 
if ($w == '') { // 회원가입시 
$row  = sql_fetch( "select  count(mb_ip) as ip_cnt from  {$g5['member_table']} where mb_ip = '{$_SERVER['REMOTE_ADDR']}'"); 
if($row['ip_cnt'] > 2) // 한아이피당 2개이상일 경우 
    alert('한 아이피에서 2번 이상 회원 가입 할 수 업습니다.');  // 적당한 안내문구
2017/03/25 12:48 2017/03/25 12:48
아래 내용을 html 최상단에 추가합니다.
PHP 5.3 미만일때
<?php
$str = $HTTP_HOST;
if(!eregi("www",$str)) {
  header("location: http://www." . $str . $REQUEST_URI);
}
?>
또는
<?php
// PHP 5.3 미만일때
$str = $_SERVER['SERVER_NAME'];
if(!eregi("www",$str)) {
  header("location: http://www.".$str.$REQUEST_URI);
}
?>
PHP 버전에 관계없이 모두 사용 가능한 방법
<?php
$str = $_SERVER['SERVER_NAME'];
if (!preg_match('/www/', $str) == true) {
  header("location: http://www.".$str.$REQUEST_URI);
}
?>
2017/03/22 21:04 2017/03/22 21:04

function edit_todayhumor_bob($dom, $url)

 {

  $dom1 = explode("\"writerInfoContents\"", $dom);

  $dom2 = explode("<!--writerInfoContents-->", $dom1[1]);

  $dom3 = explode("<!-- writerInfoContainer -->", $dom2[1]);

  $dom4 = explode("<!--viewContentText-->", $dom3[1]);

 

  $dom44 = explode("<!--viewSubjectDiv-->", $dom4[0]);

  preg_match("/viewSubjectDiv\">\s(.*?)<\/div/", $dom44[0], $tmp_subject);

  $subject = trim(strip_tags($tmp_subject[1]));

  if($this->original_date) {

   preg_match("/(\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2})/", $dom2[0], $tmp_datetime);

   $datetime = $tmp_datetime[0];

  } else {

   $datetime = date('Y-m-d H:i:s');

  }

  $dom5 = explode('viewContentText">', $dom4[0]);

  $dom5[1] = substr(trim($dom5[1]), 0, strlen(trim($dom5[1]))-6);

  $content = preg_replace("/>\s+</", "><", trim($dom5[1]));

  list($content, $file_match, $element_count) = $this->what_have($content, $this->target_element, $this->save_element);

  list($content, $thumbnail) = $this->edit_file_source($content, $file_match, $element_count);

  $dom5 = explode("<!---->", $dom4[0]);

  preg_match_all("/file_download\('.(.*?)', '(.*?)',/", $dom4[0], $tmp_torrent);

  preg_match_all("/<span class=mw_basic_view_file_info> \((.*?)\)/", $dom5[0], $tmp_torrent2);

  if(count($tmp_torrent[1]) > 0) {

   $file['url'] = $tmp_torrent[1];

   $file['name'] = $tmp_torrent[2];

   $file['size'] = $tmp_torrent2[1];

   $torrent = $this->save_torrent_rg($file);

  }

  if($this->clean_tag) $content = $this->remove_tag($content);

  return array('category'=>$category, 'content'=>$content, 'thumbnail'=>$thumbnail, 'datetime'=>$datetime, 'element_count'=>$element_count, 'subject'=>$subject, 'file'=>$torrent, 'url'=>$url);

 }

2017/02/11 19:21 2017/02/11 19:21
처음 file_get_contents()
함수를 사용해서  아래처럼 처리 했습니다. 속도가 문제네요 .. 어쩔수 없이 스크립트로 처리 했습니다.

<?php
$content = file_get_contents('http://nuguyo.com/banner.php');
if ($content !== false) {
      echo("$content");
} else {
   // 오류야
}?>

속도 해결 방법 알아 보다가 그냥 js 로 처리했습니다. 아래 소스

<script language="JavaScript" type="text/JavaScript">
<!--
    // 배너랜덤출력
    var banner=new Array();
    banner[0]="<a href='배너1 링크 URL'><img src='배너1 이미지 경로' border='0'></a>";
    banner[1]="<a href='배너2 링크 URL'><img src='배너2 이미지 경로' border='0'></a>";
    banner[2]="<a href='배너3 링크 URL'><img src='배너3 이미지 경로' border='0'></a>";
 
    var random_banner=Math.floor(Math.random()*(banner.length));
//-->
</script>

<script>document.write(banner[random_banner]);</script>

조금더 보충 설명을 하자면 

youngsam.js  파일에 

// 배너랜덤출력
    var banner=new Array();
    banner[0]="<a href='배너1 링크 URL'><img src='배너1 이미지 경로' border='0'></a>";
    banner[1]="<a href='배너2 링크 URL'><img src='배너2 이미지 경로' border='0'></a>";
    banner[2]="<a href='배너3 링크 URL'><img src='배너3 이미지 경로' border='0'></a>";
  
    var random_banner=Math.floor(Math.random()*(banner.length));

내용을 넣고

호출하고자 하는 페이지에서  youngsam.js 불러와서

<script>document.write(banner[random_banner]);</script> 

선언해도 작동합니다.
2017/02/11 18:17 2017/02/11 18:17

<? 
include_once("_common.php"); 
////////////////////////////////////////////////// 
// 
//
다시 정렬할 게시판을 입력해주세요
// 
  
$bo_table = "
게시판명"; 
////////////////////////////////////////////////// 
if ($is_admin != 'super')  die("
로그인 해주세요."); 
if (!$bo_table) die("bo_table
값이 없습니다."); 
$write_table = $g5[write_prefix].$bo_table; 
$data = array(); 
$sql = "select wr_id, wr_num from {$write_table} where wr_is_comment=0 and wr_reply='' order by wr_datetime"; 
$qry = sql_query($sql); 
while ($row = sql_fetch_array($qry)) $data[] = $row; 
sql_query("update {$write_table} set wr_num = wr_num * -1"); 
$wr_num = 0; 
foreach ($data as $row) 

    $wr_num--; 
    $row[wr_num] *= -1; 
    $sql = "update {$write_table} set wr_num = '{$wr_num}' where wr_num = '{$row[wr_num]}'"; 
    echo "$sql<br>"; 
    sql_query($sql); 

echo "
완료하였습니다."; 
?> 
  
주의: 반드시 사용전에 db  백업후 진행하셔서 사용하시길 바랍니다.

2017/02/10 22:55 2017/02/10 22:55