본문 바로가기

IT/ETC

그누보드 , 영카트 정리 #3

//비밀번호 암호화 함수 get_encrypt_string();

//프로젝트 복사해서 쓸때 로그인 안될시 data폴더 권한 707로 변경
관리자 페이지 스킨 설정 경로 adm/bbs/_common.php

 

자동로그인 유지

common.php 에서  
$tmp_mb_id = substr(preg_replace("/[^a-zA-Z0-9_]*/", "", $tmp_mb_id), 0, 20);  삭제 
$_SERVER['SERVER_SOFTWARE'] . $_SERVER['HTTP_USER_AGENT']  삭제 
 != strtolower($config['cf_admin']) 삭제 
login_ckeck.php 
if ($auto_login || 1) { 변경1추가 
. $_SERVER['HTTP_USER_AGENT'] 삭제 
. $_SERVER['SERVER_SOFTWARE'] . $_SERVER['HTTP_USER_AGENT'] 삭제 
admin.lib.php 최고관리자 자동 로그인 일때 
. $_SERVER['HTTP_USER_AGENT'] //삭제 
$admin_key = md5($member['mb_datetime'] . get_real_client_ip() );  밑에소스 주석 
index.php 인덱스를 탈때 
if ($member["mb_level"] > 1){ 
//무조건자동로그인 
$key = md5($_SERVER['SERVER_ADDR'] . $member['mb_password']); 
    set_cookie('ck_mb_id', $member['mb_id'], 86400 * 31); 
    set_cookie('ck_auto', $key, 86400 * 31); 
}

회원가입시 사진 넣기

bbs/register_form_update.php
<?php
// 첨부파일 경로
$mb_dir = G5_DATA_PATH.'/member/'.$mb_id;

// 파일 삭제 체크시
$filename2 = $member['mb_10'];
if (isset($_POST['del_mb_10'])) {
    @unlink($mb_dir.'/'.iconv("UTF-8","EUC-KR",$filename2));
	$sql = " update {$g5['member_table']} set mb_10 ='' where mb_id='$mb_id'" ;
	sql_query($sql);
}

// 파일 업로드
$msg = "";
$mb_10 = '';

if (isset($_FILES['mb_10']) && is_uploaded_file($_FILES['mb_10']['tmp_name'])) {
    if (preg_match("/(\.gif|jpg|png|jpeg)$/i", $_FILES['mb_10']['name'])) {
        // 파일 용량이 설정값보다 이하만 업로드 가능
        if ($_FILES['mb_10']['size'] <= $config['cf_member_icon_size']) {
            @mkdir($mb_dir, G5_DIR_PERMISSION);
            @chmod($mb_dir, G5_DIR_PERMISSION);
			$dest_path = $mb_dir.'/'.$_FILES['mb_10']['name'];

			// 수정시 기존파일 삭제
			$filename2 = $member['mb_10'];
			@unlink($mb_dir.'/'.iconv("UTF-8","EUC-KR",$filename2));
			$sql = " up0 {$g5['member_table']} set mb_10 ='' where mb_id='$mb_id'" ;
			sql_query($sql);
			
			// 파일업로드
            move_uploaded_file($_FILES['mb_10']['tmp_name'], iconv("UTF-8","EUC-KR",$dest_path));
			chmod(iconv("UTF-8","EUC-KR",$dest_path), G5_FILE_PERMISSION);
            
			// 파일명 여분필드에 업데이트
			$filename = $_FILES['mb_10']['name'];
			$sql = " update {$g5['member_table']} set mb_10 ='$filename' where mb_id='$mb_id'" ;
			sql_query($sql);

			
        } else {
            $msg .= '첨부이미지를 5M 이하로 업로드 해주십시오.';
        }

    } else {
        $msg .= $_FILES['mb_10']['name'].'은(는) 이미지파일이 아닙니다.';
    }
} ?>
register_form.skin.php
	<li>
<label for="reg_mb_10">이미지</label><<span class="frm_info" style="font-size:11px">5M 이하의 이미지파일만 등록 가능 합니다.           </span>			
                <input type="file" name="mb_10" id="reg_mb_10" class="frm_input">
				<?php				
				// 첨부파일 경로			
				$mb_10_path = G5_DATA_PATH.'/member/'.$member['mb_id'].'/'.$member['mb_10'];
				$mb_10_url  = G5_DATA_URL.'/member/'.$member['mb_id'].'/'.$member['mb_10'];
				

				if ($w == 'u' && file_exists($mb_10_path)) { ?>
                <br><a href="<?=$mb_10_url ?>" target="_target"><font color="red">이미지</font></a>
                <input type="checkbox" name="del_mb_10" value="1" id="del_mb_10">
                <label for="del_mb_10">삭제</label>
                <?php }  ?>
				</li>
mypage.php 파일명은 달라도 상관없음
$mb_10_path = '/data/member/'.$member['mb_id'].'/'.$member['mb_10'];
            <p><img src="<?php echo $mb_10_path;?>" alt="프로필사진"></p>
adm/member_from.php , member_from_update.php관리자페이지에서 회원추가

이미지 파일 용량 줄이기

plugin에 php-image-resize-master을 넣고 //php 5.3 이상
board skin폴더에 write_update.head.skin.php 파일을 만들어서 
<?php 
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 
echo 
include G5_PLUGIN_PATH."/php-image-resize-master/lib/ImageResize.php";//플러그인 경로를 확인하세요 

$width   = 900;  //  너비 px
$height  = 900; //  높이 px (포토샵에서 지원하는 최대 높이값)
$quality = 90;   //  선명도 %

use \Gumlet\ImageResize; 

for ($i=0; $i<count($_FILES['bf_file']['name']); $i++) { 
    //이미지 내용 확인 
    $tmp_file  = $_FILES['bf_file']['tmp_name'][$i]; 
    $filename  = $_FILES['bf_file']['name'][$i]; 
    
    //이미지 확장자 검사 
    if($filename && preg_match("/\.({$config['cf_image_extension']})$/i", $filename)){ 
        // image type 검사 
        $timg = @getimagesize($tmp_file); 
        if ($timg['2'] < 1 || $timg['2'] > 16){ 
            continue; 
        } 
        //이미지 변경 
        $image = new ImageResize($tmp_file); 
        $image->resizeToBestFit($width, $height); 
        $image->save($tmp_file, null, $quality); 
        $_FILES['bf_file']['size'][$i]=filesize($tmp_file); 
        unset($image); 
    } 
} 
?> 

이미지 썸네일

<?php
include_once('../common.php');
include_once(G5_LIB_PATH."/thumbnail.lib.php");

$filename = 'test2.gif';
 		$filepath = G5_DATA_PATH."/member_image/test2";
 		$filepath0 = G5_URL."/data/member_image/test2";
$thumb_width = 180;
$thumb_height = 120;
$thfl = $filepath0.'/'.thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, false, true);//false를 true로 바꾸면 새로 생성
?>
<img src="<?=$thfl?>" alt="">

관리자 페이지 회원권한 이름 바꾸기

//admin.lib.php에서 수정
function get_member_level_select($name, $start_id=0, $end_id=10, $selected="", $event="")
{
    global $g5;

$userName;
    $str = "\n<select id=\"{$name}\" name=\"{$name}\"";
    if ($event) $str .= " $event";
    $str .= ">\n";
    for ($i=$start_id; $i<=$end_id; $i++) {
		if ($i>3 && $i<11)
			continue;
        $str .= '<option value="'.$i.'"';
		switch ($i) 
{ 
case 1 : $userName = "비회원"; break; 
case 2 : $userName = "일반회원"; break; 
case 3 : $userName = "상점주인"; break;
case 4 : $userName = "4"; break; 
case 5 : $userName = "5"; break; 
case 6 : $userName = "6"; break; 
case 7 : $userName = "7"; break; 
case 8 : $userName = "8"; break; 
case 9 : $userName = "9"; break; 
case 10 : $userName = "관리자"; break; 
default : $userName = "";	break; 
}
        if ($i == $selected)
            $str .= ' selected="selected"';
        $str .= ">{$userName}</option>\n";
    }
    $str .= "</select>\n";
    return $str;
}

html에서 커스트마이징 페이징 만들기

<?php
$sql_common = " from g5_member ";

$sql_search = '';

if($stx){
	if($sfl == 'all'){
		if($sfl2 !='all'){
			$sql_search = "and mb_3 like '{$sfl2}%'";
		}
	}else{
			$sql_search = "and mb_2 = '{$sfl}'  ";
		if($sfl2!='all'){
			$sql_search .= "and mb_3 like '{$sfl2}%'";
		}
	}
}
$where0 =  "where mb_password != '' ";
// 테이블의 전체 레코드수만 얻음
$sql = " select count(*) as cnt " . $sql_common.$where0.$sql_search;
$row = sql_fetch($sql);
$total_count = $row['cnt'];

$rows = $config['cf_page_rows'];
$total_page  = ceil($total_count / $rows);  // 전체 페이지 계산
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함

$sql = "select * $sql_common {$where0} {$sql_search} order by mb_no desc limit $from_record, $rows ";
$result = sql_query($sql);

?>
//출력내용 
<?php echo get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, "{$_SERVER['SCRIPT_NAME']}?$qstr&amp;page="); ?><!-- //페이징출력 -->

댓글 첨부파일

view_comment.skin
		<input type="file" name='com_file' id='com_file' >
write_comment_update.php
	if($_FILES['com_file']['name']){//댓글 첨부파일
		$file_name = $member['mb_id'].$comment_id.".png";
		$file_tmp = $_FILES['com_file']['tmp_name'];
	 	$path =  G5_DATA_PATH."/file/com01/comment/";//서버에 저장될 경로

		$res = move_uploaded_file($file_tmp,$path.$file_name);//파일을 실제로 서버에 업로드 하는 php 함수
		if($res){ //댓글파일
			sql_query("update $write_table set wr_9 = '{$file_name}' where wr_id = '{$comment_id}'");
		}
	}		
<?php 
	if($list[$i]['wr_9']){
	$filename = $list[$i]['wr_9'];
	$filepath = G5_DATA_PATH."/file/com01/comment";
	$filepath0 = G5_URL."/data/file/com01/comment";
	$thumb_width = 100;
	$thumb_height = 80;
	$thfl = $filepath0.'/'.thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, false);
	?>
	<img src="<?=$thfl?>" alt="댓글이미지">
<? } ?>	

쪽지에 첨부파일

memo_form.skin.php
		<input type="file" name='com_file' id='com_file'>
memo_form_update.php
	if($_FILES['com_file']['name']){//쪽지 첨부파일
		$file_name = $member['mb_id'].$me_id.".png";
		$file_tmp = $_FILES['com_file']['tmp_name'];
	 	$path =  G5_DATA_PATH."/memo/";//서버에 저장될 경로

		$res = move_uploaded_file($file_tmp,$path.$file_name);//파일을 실제로 서버에 업로드 하는 php 함수
		if($res){ //쪽지파일 filename컬럼생성
			sql_query("update g5_memo set filename = '{$file_name}' where me_id = '{$me_id}'");
		}
	}
memo_view_skin.php
<?php
	$filename = $memo['filename'];
			$filepath = G5_DATA_PATH."/memo";
			$filepath0 = G5_URL."/data/memo";
	$thumb_width = 180;
	$thumb_height = 120;
	$thfl = $filepath0.'/'.thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, false);
	?>

<img src="<?=$thfl?>" alt="" style='margin-left:20px;'>	
	
//날짜
 <?php include_once(G5_PLUGIN_PATH.'/jquery-ui/datepicker.php'); ?> 
                <script> 
                    $(function(){ 
                        $("#datepicker_from, #datepicker_to").datepicker({ 
                            changeMonth: true, 
                            changeYear: true, 
                            dateFormat: "yy-mm-dd", 
                            showButtonPanel: true, 
                            yearRange: "c-99:c+99", 
                            maxDate: "+365d" 
                        }); 
                    }); 
                </script> 

안드로이드에서 첨부파일 다운 안될경우

common.lib.php		
get_file에서  $file[$no]['href'] 밑에 첨부
$dw = sql_fetch("select bf_source, bf_file from g5_board_file where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no='$no' ");
$file[$no]['bffile'] = "/data/file/$bo_table/$dw[bf_file]";
$file[$no]['bfsource'] = "$dw[bf_source]";\

view.skin.php 첨부파일 //가변파일
<a href="<?php echo $view['file'][$i]['bffile'];  ?>" download="<?php echo $view['file'][$i]['bfsource'];  ?>" >

사진돌리기

//view.skin.php
	$filename[$i] = $view['file'][$i]['file'];
				$filepath[$i] = G5_DATA_PATH.'/file/'.$bo_table;
				$filepath0[$i] = G5_URL.'/data/file/'.$bo_table;
				
				$thumb_width = $view['file'][$i]['width'];
				$thumb_height = $view['file'][$i]['heigth'];
				
				if (readExif($filepath[$i]."/".$filename[$i])){
					$tmp = $thumb_height;
					$thumb_height = $thumb_width;
					$thumb_width = $tmp;
				}
				else {
					if($view['file'][$i]['width'] < $view['file'][$i]['height']){
						$thumb_width = 330;
						$thumb_height = 440;
					}else{
						$thumb_width = 440;
						$thumb_height = 330;
					}
				}

				$thfl[$i] = $filepath0[$i].'/'.thumbnail($filename[$i], $filepath[$i], $filepath[$i], $thumb_width, $thumb_height, false, true);
				
				echo '<img src="'.$thfl[$i].'" />';
				
				

//thumbnail.lib.php
function readExif($source_file){
	$src = @imagecreatefromjpeg($source_file);

	if(function_exists('exif_read_data')) {
		// exif 정보를 기준으로 회전각도 구함
		$exif = @exif_read_data($source_file);
		if(!empty($exif['Orientation'])) {
			switch($exif['Orientation']) {
				case 8:
					return true;
					break;
				case 3:
					return false;
					break;
				case 6:
					return true;
					break;
			}
		}
	}
	return false;
}			

사진 돌려서 저장하기

//writeupdate부분에서 위에 
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
//$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);
//주석처리하고 덮어씌우기

//사진 돌려서 저장하기
//세로저장
        $exifData = exif_read_data($tmp_file); 
        if($exifData['Orientation'] == 6) { 
            // 시계방향으로 90도 돌려줘야 정상인데 270도 돌려야 정상적으로 출력됨 
            $degree = 270; 
        } 
        else if($exifData['Orientation'] == 8) { 
            // 반시계방향으로 90도 돌려줘야 정상 
            $degree = 90; 
        } 
        else if($exifData['Orientation'] == 3) { 
            $degree = 180; 
        } 
        if($degree) { 
            if($exifData[FileType] == 1) { 
                $source = imagecreatefromgif($tmp_file); 
                $source = imagerotate ($source , $degree, 0); 
                imagegif($source, $dest_file); 
            } 
            else if($exifData[FileType] == 2) { 
                $source = imagecreatefromjpeg($tmp_file); 
                $source = imagerotate ($source , $degree, 0); 
                imagejpeg($source, $dest_file); 
            } 
            else if($exifData[FileType] == 3) { 
                $source = imagecreatefrompng($tmp_file); 
                $source = imagerotate ($source , $degree, 0); 
                imagepng($source, $dest_file); 
            } 

            imagedestroy($source); 
        } 
        else { 
            // 업로드가 안된다면 에러메세지 출력하고 죽어버립니다. 
            $error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]); 
        } 
        // 세로사진 처리 끝