# 외부이미지 저장하기
function curlDownload( $path, $imgLink ){
// 파일명 가져오기
$linkArray = explode("/", $imgLink);
$filename = $linkArray[count($linkArray)-1];
// 저장할 이미지 위치 및 파일명
$fp = fopen( $path.$filename,'w');
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $imgLink);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
// 가져올 외부이미지 주소
fwrite($fp,$contents);
fclose($fp);
}
# 코드에따른 번호 얻기
function menuCode( $tb, $code ){
global $connect;
$qs = "SELECT * FROM tbl_".$tb."_admin WHERE code='".$code."'";
$q = mysqli_query($connect,$qs);
$r = $q ? mysqli_fetch_array($q) : die(mysqli_error($connect));
return $r["nm"];
}
function _badge($bg,$icon,$text){
return ' '.$text.'';
}
function encCode( $nm, $date){
return BASE_CONVERT( $nm, 10, 36) .'-'. BASE_CONVERT( $r["date"], 10, 36).'-'. BASE_CONVERT( RAND(111,999), 10, 36);
}
function decCode( $data ){
$array = explode('-',$data);
$rtn = array();
$rtn[0] = BASE_CONVERT( $array[0], 36, 10);
$rtn[1] = BASE_CONVERT( $array[1], 36, 10);
$rtn[2] = BASE_CONVERT( $array[2], 36, 10);
return $rtn;
}
# 이미지목록 중 첫번재 이미지 리턴
function arrayThum( $path, $data ){
if( $data=="" ) return;
$arr = explode(',',$data);
if( $arr[0]=="" ) return;
return '';
}
// SQL 인젝션 취약점 제거
function injDelete( $data ){
$spc = array('<', '>', '(', ')', '\'', '"', ';', '=', '+', '|', '&', '-', '#', '..');
return str_replace($spc, '', $data);
}
function injDel( $data ){
$spc = array('<', '>', '(', ')', '\'', '"', ';', '=', '+', '|', '&', '#', '..');
return str_replace($spc, '', $data);
}
// 키워드 공백구분 badge 표시
function tagBadge($data) {
$array = explode(' ', trim($data));
$string = ''; // 초기화 필수!
foreach ($array as $item) {
if ($item !== '') {
$string .= ''.htmlspecialchars($item).'';
}
}
return $string;
}
// 전체갯수 얻기
function _total( $tb_nm, $where, $dev = null){
global $connect;
$qs = "SELECT COUNT(*) AS total FROM ".$tb_nm." ".$where;
$q = mysqli_query($connect,$qs);
$r = mysqli_fetch_array($q);
if( $dev==true ){
echo '
'.$qs.'
';
}
return $r["total"];
}
// 값 1개만 얻기
function _getOnce( $fid , $tb_nm, $where){
global $connect;
$q = mysqli_query($connect,"SELECT ".$fid." FROM ".$tb_nm." ".$where);
$r = ($q==true) ? mysqli_fetch_array($q) : die(mysql_error());
if( isset($r[$fid]) ){
return $r[$fid];
}
}
// 값 1개만 얻기
function _row( $fid , $tb_nm, $where){
global $connect;
$qs = "SELECT ".$fid." FROM ".$tb_nm." ".$where;
$q = mysqli_query($connect,$qs);
$r = ($q==true) ? mysqli_fetch_array($q) : die(mysql_error());
return $r;
}
// 값 1개 라인만 얻기
function _rows( $qs ){
global $connect;
$q = mysqli_query($connect,$qs);
$r = ($q==true) ? mysqli_fetch_array($q) : die(mysql_error());
return $r;
}
/* db 내용을 배열로 리턴 */
function _list( $sql ){
global $connect;
$data = array();
$q = mysqli_query($connect,$sql);
if( $q==false ) die(mysqli_error($connect));
while($r=mysqli_fetch_array($q)){
$data[] = $r;
}
return $data;
}
function _sortDesc( $tb_nm, $num, $act ){
global $connect;
$sql = "
SELECT a.nm, a.idx,
( SELECT b.nm FROM $tb_nm b WHERE a.idx > b.idx ORDER BY idx DESC LIMIT 1 ) AS pre,
( SELECT b.nm FROM $tb_nm b WHERE a.idx < b.idx ORDER BY idx ASC LIMIT 1 ) AS nxt
FROM $tb_nm a
WHERE nm=".$num."
LIMIT 1
";
$query = mysqli_query($connect,$sql);
$row = ($query==true) ? mysqli_fetch_array($query) : die(mysqli_error($connect));
switch( $act ){
case 'up' :
if( $row["pre"]>0 ){
$q = mysqli_query($connect,"SELECT idx AS up FROM $tb_nm WHERE nm='".$row["pre"]."'");
$r = ($q==true) ? mysqli_fetch_array($q) : die(mysqli_error($connect));
IF( mysqli_query($connect,"UPDATE $tb_nm SET idx='".$r["up"]."' WHERE nm='".$num."'")==false ) die(mysqli_error($connect));
IF( mysqli_query($connect,"UPDATE $tb_nm SET idx='".$row["idx"]."' WHERE nm='".$row["pre"]."'")==false ) die(mysqli_error($connect));
return "OK|위로 이동되었습니다.";
exit;
}
break;
case 'dn' :
if( $row["nxt"]>0 ){
$q = mysqli_query($connect,"SELECT idx AS dn FROM $tb_nm WHERE nm='".$row["nxt"]."'");
$r = ($q==true) ? mysqli_fetch_array($q) : die(mysqli_error($connect));
IF( mysqli_query($connect,"UPDATE $tb_nm SET idx='".$r["dn"]."' WHERE nm='".$num."'")==false ) die(mysqli_error($connect));
IF( mysqli_query($connect,"UPDATE $tb_nm SET idx='".$row["idx"]."' WHERE nm='".$row["nxt"]."'")==false ) die(mysqli_error($connect));
return "OK|아래로 이동되었습니다.";
}
break;
}
return'|데이터 없음';
}
/* 1개씩 정렬 2023-12-12 */
function _sort( $tb_nm, $num, $act, $by = null ){
global $connect;
$by = isset($by) && $by ? $by : 'ASC';
$sql = "
SELECT a.nm, a.idx,
( SELECT b.nm FROM $tb_nm b WHERE a.idx > b.idx ORDER BY idx ".$by." LIMIT 1 ) AS nxt,
( SELECT b.nm FROM $tb_nm b WHERE a.idx < b.idx ORDER BY idx ".$by." LIMIT 1 ) AS pre
FROM $tb_nm a
WHERE nm=".$num."
LIMIT 1
";
$query = mysqli_query($connect,$sql);
$row = ($query==true) ? mysqli_fetch_array($query) : die(mysqli_error($connect));
switch( $act ){
case 'up' :
if( $row["pre"] ){
$q = mysqli_query($connect,"SELECT idx AS up FROM $tb_nm WHERE nm='".$row["pre"]."'");
$r = ($q==true) ? mysqli_fetch_array($q) : die(mysqli_error($connect));
IF( mysqli_query($connect,"UPDATE $tb_nm SET idx='".$r["up"]."' WHERE nm='".$num."'")==false ) die(mysqli_error($connect));
IF( mysqli_query($connect,"UPDATE $tb_nm SET idx='".$row["idx"]."' WHERE nm='".$row["pre"]."'")==false ) die(mysqli_error($connect));
return "OK|위로 이동되었습니다.";
exit;
}
break;
case 'dn' :
if( $row["nxt"] ){
$q = mysqli_query($connect,"SELECT idx AS dn FROM $tb_nm WHERE nm='".$row["nxt"]."'");
$r = ($q==true) ? mysqli_fetch_array($q) : die(mysqli_error($connect));
IF( mysqli_query($connect,"UPDATE $tb_nm SET idx='".$r["dn"]."' WHERE nm='".$num."'")==false ) die(mysqli_error($connect));
IF( mysqli_query($connect,"UPDATE $tb_nm SET idx='".$row["idx"]."' WHERE nm='".$row["nxt"]."'")==false ) die(mysqli_error($connect));
return "OK|아래로 이동되었습니다.";
}
break;
}
return'|데이터 없음';
}
// 시간이 아닌 지난시간표시
function passing_time($datetime) {
if( $datetime<1 ) return 0;
$time_lag = time() - $datetime;
if($time_lag < 60) {
$posting_time = "방금";
}
elseif($time_lag >= 60 and $time_lag < 3600) {
$posting_time = floor($time_lag/60)."분 전";
}
elseif($time_lag >= 3600 and $time_lag < 86400) {
$posting_time = floor($time_lag/3600)."시간 전";
}
elseif($time_lag >= 86400 and $time_lag < 2419200) {
$posting_time = floor($time_lag/86400)."일 전";
}
else {
$posting_time = date("y.m.d", date($datetime));
}
return $posting_time;
}
# 베너 함수
function _banner( $nm, $pb = null, $rsize = null){
global $connect;
global $_SERVER;
$query = mysqli_query($connect,"SELECT * FROM tbl_extra WHERE nm='".$nm."'");
$row = ($query==true) ? mysqli_fetch_array($query) : die(mysqli_error( $connect ));
//preg_match_all("/(src=|href=)(\'|\")?([^<>\s\'\"]*)(\'|\"|\s|)/i", $row["contents"], $url); #IMAGE HREF
preg_match_all("|]+>(.*)|U", $row["contents"], $url);
for($i=0;$i0 ){
$array[$i] = $url[0][$i];
}
else{
$array[$i] = $url[1][$i];
}
if( $rsize ){
$array[$i] = str_replace('src=','" style="width:'.$rsize.'px;" src=',$array[$i]);
}
else{
$array[$i] = str_replace('">','" class="d-block w-100">',$array[$i]);
}
if( $pb ){
$array[$i] = ''.$array[$i].'
';
}
$string.= $array[$i];
}
# 랜덤
if( $row["isrand"]==1 ) shuffle($array);
return $string;
}
# 20231202 웹에디터 저장시 이미지 저장/삭제/빼기
# 20240329 삭제된 이미지 리턴
function html_iremove( $pre, $cont, $filetmp, $filepath, $tag = false){
global $_SERVER;
$dels = '';
// 불필요한테그 제거
if( $tag==true ){
$cont = preg_replace('/(width(\:)\=?[0-9]+px\;?)/i', null, $cont);
$cont = preg_replace('/(height(\:)\=?[0-9]+px\;?)/i', null, $cont);
$cont = preg_replace('/(style\=\"\ \"?)/i', null, $cont);
$cont = preg_replace('/(alt\=\"\" ?)/i', null, $cont);
}
# 수정으로 인한 내용에 없는 이미지 제거
if( $pre ){
preg_match_all("/
]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $pre, $data);
for($i=0;$i0 ){
preg_match_all("/
]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $cont, $data);
$tot = count($data[1]);
for($i=0;$i<$tot;$i++){
if(strpos(' '.$data[1][$i],$filetmp)>0 ){
$upname = str_replace($filetmp, $filepath, $data[1][$i]); //이미지명 변경된 경로명 저장
$res = rename($_SERVER["DOCUMENT_ROOT"].$data[1][$i], $_SERVER["DOCUMENT_ROOT"].$upname); //임시 폴더 이동
if( $res==true ){
$cont = str_replace($data[1][$i], $upname, $cont); //내용에서 파일경로 변경
}
}//end if
}//end for
}//end if
if( $tag==true ){
$cont = str_replace("","<?",$cont);
$cont = str_replace("?>",">?",$cont);
$cont = str_replace("]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $pre, $data);
for($i=0;$i0 ){
preg_match_all("/
]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $cont, $data);
$tot = count($data[1]);
for($i=0;$i<$tot;$i++){
if(strpos(' '.$data[1][$i],$filetmp)>0 ){
$upname = str_replace($filetmp, $filepath, $data[1][$i]); //이미지명 변경된 경로명 저장
$res = rename($_SERVER["DOCUMENT_ROOT"].$data[1][$i], $_SERVER["DOCUMENT_ROOT"].$upname); //임시 폴더 이동
if( $res==true ){
$cont = str_replace($data[1][$i], $upname, $cont); //내용에서 파일경로 변경
}
}//end if
}//end for
}//end if
if( $tag==true ){
$cont = str_replace("","<?",$cont);
$cont = str_replace("?>",">?",$cont);
$cont = str_replace(" yyyy-mm-dd
function ymdStr( $ymd ){
return substr($ymd,0,4).'-'.substr($ymd,4,2).'-'.substr($ymd,6,2);
}
function ymdwStr( $ymd ){
$date = mktime(0,0,0,substr($ymd,4,2),substr($ymd,6,2),substr($ymd,0,4));
$w = date('w',$date);
$week = array('일','월','화','수','목','금','토');
return date('Y-m-d',$date) .'('. $week[$w].')';
}
function wStr( $ymd ){
$date = mktime(0,0,0,substr($ymd,4,2),substr($ymd,6,2),substr($ymd,0,4));
$w = date('w',$date);
$week = array('일','월','화','수','목','금','토');
return $week[$w];
}
function mdwStr( $ymd ){
$date = mktime(0,0,0,substr($ymd,4,2),substr($ymd,6,2),substr($ymd,0,4));
$w = date('w',$date);
$week = array('일','월','화','수','목','금','토');
return date('m-d',$date) .'('. $week[$w].')';
}
function outwonComma( $price ){
if( $price==0 ) return '';
return ''.number_format($price);
}
function outwoniComma( $ico,$price ){
if( $price==0 ) return '';
return $ico.' '.number_format($price);
}
// 금액 없으면 공백 / 콤마
function outComma( $price ){
if( $price==0 ) return '';
return number_format($price);
}
function f_info($url,$strpos){
$f = pathinfo($url);
$f['path'] = substr($f['dirname'],strpos($f['dirname'],$strpos));
$f['domain'] = substr($f['dirname'],0,strpos($f['dirname'],$strpos));
return $f;
}
// 게사판 클레스
class cBoard {
//첨부파일 업로드
function upload($path,$file, $pre, $dels, $ext) {
if( is_array($dels)==true && count($dels)>0 ){
$dels = implode(',',$dels);
$dels = ',,'.$dels.',';
}
$tmp = array();
$pre = explode(',',$pre); //저장된 파일명
// 파일 업로드
for($i=0;$i0 ){
unlink( $path.$pre[$i] );
$pre[$i] = '';
}
if( $file['name'][$i] ){
$tmp[] = auto_upload($path,$file['name'][$i],$file['tmp_name'][$i], $pre[$i], $ext,1);
}
else{
$tmp[] = $pre[$i];
}
}
return COUNT($tmp)>0 ? implode(',',$tmp) : '';
}
//파일 페스 얻기
function f_info($url,$strpos){
$f = pathinfo($url);
$f['path'] = substr($f['dirname'],strpos($f['dirname'],$strpos));
$f['domain'] = substr($f['dirname'],0,strpos($f['dirname'],$strpos));
return $f;
}
function f_delete( $chk ){
//데이터열기
$q = mysqli_query($connect,"SELECT * FROM $tb_nm WHERE nm='$chk[$i]'");
$r = ($q==true) ? mysqli_fetch_array($q) : die(mysqli_error($connect));
}
}
// 숫자 한글 변환
function price_kor($total_price){
$vr = '';
$price = $total_price;
$trans_kor = array("","일","이","삼","사","오","육","칠","팔","구");
$price_unit = array("","십","백","천","만","십","백","천","억","십","백","천","조","십","백","천");
$valuecode = array("","만","억","조");
$value = STRLEN($price);
$k=0;
for($i=$value;$i>0;$i--){
$vv = "";
$vc = substr($price,$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;
}
return $vr;
}
function telegram_msg( $token,$chat_id,$msg ){
if( $msg == '' ) return false;
$url = 'https://api.telegram.org/bot'.$token.'/sendmessage?chat_id='.$chat_id.'&text='.urlencode($msg);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
//리사이즈
function convertApps( $path,$file,$scale ){
$departure = $path.$file;
if( $file=='' || is_file($departure)==false) return $file;
$f = pathinfo($departure);
$size = getimagesize($departure);
if( $size[0]<1 || $size[1]<1 || $size==false ) return $file;
//작은 사이즈는 통과
if( $size[0]<$scale ) return $file;
$scale = ($scale>0) ? $scale : 610;
//이미지 개체 생성
switch($size[2]){
case 1 : $src_im = imageCreateFromGIF($departure); break;
case 2 : $src_im = imageCreateFromJPEG($departure); break;
default: $src_im = imageCreateFromPNG($departure); break;
}
$scaleY = ROUND(($size[1] * $scale) / $size[0]);
$dst_im = imagecreatetruecolor($scale, $scaleY) or die('Cannot Initialize new GD image stream');
$im = imagecreate($scale,$scaleY);
$white = ImageColorAllocate($im, 255, 255, 255);
ImageCopy($dst_im,$im,0,0,0,0,$scale,$scaleY);
ImageCopyResampled($dst_im, $src_im,0,0,0,0,$scale,$scaleY,$size[0],$size[1]);
$time = explode(" ", microtime());
$usec = (double)$time[0];
$sec = (double)$time[1];
//파일명 자리수를 줄이기 위해 10진수 파일명일 36진수로 변경
$newfile = base_convert(($sec + $usec) * 100000, 10, 36) . rand(100,999) . '.jpg';
$src_im = imagejpeg($dst_im , $path.$newfile , 90);
ImageDestroy($src_im);
ImageDestroy($dst_im);
unlink($departure);
return $newfile;
}
// 전화번호의 숫자만 취한 후 중간에 하이픈(-)을 넣는다.
// http://www.joshi.co.kr/index.php?mid=board_EudV58&document_srl=648
function add_hyphen($tel)
{
$tel = preg_replace("/[^0-9]/", "", $tel); // 숫자 이외 제거
if (substr($tel,0,2)=='02')
return preg_replace("/([0-9]{2})([0-9]{3,4})([0-9]{4})$/", "\\1-\\2-\\3", $tel);
else if (strlen($tel)=='8' && (substr($tel,0,2)=='15' || substr($tel,0,2)=='16' || substr($tel,0,2)=='18'))
// 지능망 번호이면
return preg_replace("/([0-9]{4})([0-9]{4})$/", "\\1-\\2", $tel);
else
return preg_replace("/([0-9]{3})([0-9]{3,4})([0-9]{4})$/", "\\1-\\2-\\3", $tel);
}
function cls_price( $price ){
$price = trim($price);
$price = strip_tags($price);
$price = str_replace(",","",$price);
return $price ;
}
//콤마제거
function comma_clear( $price ){
$price = trim($price);
$price = strip_tags($price);
$price = str_replace(',','',$price);
return $price ;
}
//자동링크
function auto_link($contents) {
// domain+port
$pattern = "/(http|https|ftp|mms):\/\/[0-9a-z-]+(\.[_0-9a-z-]+)+(:[0-9]{2,4})?\/?";
// sub roots
$pattern.= "([\.~_0-9a-z-]+\/?)*";
// file & extension string
$pattern.= "(\S+\.[_0-9a-z]+)?";
// parameters
$pattern.= "(\?[_0-9a-z#%&=\-\+]+)*/i";
$replacement = "\\0";
return preg_replace($pattern, $replacement, $contents, -1);
}
//중복 제거
function overlap_Clear( $exp, $string ){
$string = txtFilter( $string );
if( $string == "" ) return "";
$arr = array_unique( explode($exp,$string) );
return implode($exp,$arr);
}
//문자 필터
function txtFilter( $string ){
$string = trim($string);
$string = stripslashes($string);
$string = strip_tags($string);
$string = str_replace("http://","",$string);
$string = str_replace("|","",$string);
$string = str_replace("\\","",$string);
$string = str_replace(", ",",",$string);
return $string;
}
/* PHP 5.3.0
Function replacements
POSIX PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() preg_replace()
eregi() preg_match()
split() preg_split()
spliti() preg_split()
sql_regcase() No equivalent
*/
//내용에 URL 자동링크
function autolinkChange($contents){
$pattern = "/(http|https|ftp|mms):\/\/[0-9a-z-]+(\.[_0-9a-z-]+)+(:[0-9]{2,4})?\/?"; // domain+port
$pattern.= "([\.~_0-9a-z-]+\/?)*"; // sub roots or sub directory
$pattern.= "(\S+\.[_0-9a-z]+\??)?" ; // file & extension string
//$pattern.= "([\\S+\\_0-9a-z#&=-]+)*/i"; // parameters
$pattern.= "([_0-9a-z#&=-]+)*/i"; // parameters
$replace = "\\0";
$data = preg_replace($pattern, $replace, $contents, -1);
return $data;
}
function isNumberic($string){
$string = trim($string);
$string = str_replace(",","",$string);
$string = preg_replace("/[^0-9.-]/", "", $string);
return $string;
}
//$thumb = uploadFile("$filedir/$dir/",$thumb_name,$thumb,$r[thumb],$extend,1);
function uploadFile($filedir,$filename,$moment,$previous,$ext,$rename){
//No file.
if(!$filename) return $previous;
//File Extend Permission
$f = pathinfo($filename);
if($ext && strpos(" $ext",strtolower($f["extension"])) < 1){
echo("");
return $previous;
}
$newfile = $filename;
//파일명 자동정의
if($rename == 1){
$time = explode(" ", microtime());
$usec = (double)$time[0];
$sec = (double)$time[1];
$newfile = base_convert(($sec + $usec) * 100000, 10, 36) . rand(100,999) . '.' . $f["extension"]; //16 -> 36 Convert
}
else{
$newfile = $rename . '.' . $f[extension];
}
//새로운 파일첨부시만 이전파일이 있으면 삭제
if($filename && $previous && is_file($filedir.$previous)) unlink($filedir.$previous);
//업로드전 중복여부 검사
if(is_file($filedir.$newfile)) {
print"";
return $previous;
}
//파일업로드
$result = move_uploaded_file($moment, $filedir.$newfile);
if(!$result) {
print"";
return $previous;
}
return $newfile;
}
function multiuploadFiles(){
$func = func_get_args();
$dir = $func[0];//경로
$file = $func[1];//파일개체
$pre = $func[2];//이전파일
$ext = $func[3];//허용확장자
$isauto = $func[4];//파일명변경
$definename = ( ISSET($func[5]) && $func[5] ) ? $func[5] : '';//유저파일명
$pre_arr = explode(',',$pre);
$str = '';
$filelength = count($file["name"]);
for($i=0;$i<$filelength;$i++){
if($i > 0) $str.= ",";
if($file["name"][$i]){
$f = pathinfo($file["name"][$i]);
$f_ext = strtolower($f["extension"]);
if($definename) $changename = $definename .".".$f["extension"]; //사용자 정의 파일명
else $changename = $isauto ? base_convert(date(time().rand(0,99)),10,36) . rand(100,999) . ".".$f["extension"] : $file["name"][$i]; //자동파일명 정의
//이전파일 삭제
if(is_file($dir.$pre_arr[$i]) == true) unlink($dir.$pre_arr[$i]);
if($ext && strpos(" ,$ext,",",$f_ext,") < 1){
echo("");
$changename = "";
}
//중복검사
if(is_file($dir.$changename) == true){
print"";
$changename = "";
}
$result = move_uploaded_file($file["tmp_name"][$i],"$dir$changename"); //파일업로드
$str.= $changename;
}
else{
$str.= $pre_arr[$i];
}
}
return $str;
}
#이메일 인증
function check_email($email, $check_dns = false){
if( (preg_match('/(@.*@)|(..)|(@.)|(.@)|(^.)/', $email)) || (preg_match('/^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/', $email)) ) {
if($check_dns){
$host = explode('@', $email);
// Check for MX record
if( checkdnsrr($host[1], 'MX') ) return true;
// Check for A record
if( checkdnsrr($host[1], 'A') ) return true;
// Check for CNAME record
if( checkdnsrr($host[1], 'CNAME') ) return true;
}
else{
return true;
}
}
return false;
}
# [file_save] 파일열기
# $file : 파일명(경로포함)
function file_load($file) {
if(file_exists($file)){
$fp = fopen ($file,'r');
return @fread ($fp,filesize($file));
fclose ($fp);
}
}
# [file_save] 파일저장
# $file : 파일명(경로포함)
# $string : 저장할내용
function file_save($file,$string){
$fp = fopen ($file,'w');
fwrite ($fp,stripslashes($string));
fclose ($fp);
}
function fsave($file,$string){
$fp = fopen ($file,'w');
fwrite ($fp,$string);
fclose ($fp);
}
//$stpage_time = ptime(0,0);
# [page] 페이지 이동
# parameter
# $start : 시작값
# $total : 전체값
# $scale : 표시할갯수
# $page_scale : 이동할 페이지 링크수
# $link : 페이지이동시 따라갈 파라미터
function pp($start,$total,$scale,$page_scale,$page_total,$link){
if($total<1 || $scale<1 ) return;
$page = floor($start / ($scale * $page_scale));
if(($total > $scale) && ($start+1 > $scale*$page_scale)){
$pre_start = $page * $scale * $page_scale - $scale;
$str.= '';
}
else $str.= '';
for($vj=0; $vj<$page_scale; $vj++) {
$ln = ($page * $page_scale + $vj) * $scale;
$page_num = $page * $page_scale+$vj + 1;
if($ln < $total) {
if($ln != $start) $str.= ''.$page_num.'';
else $str.= ''.$page_num.'';
}
}
$n_start = ($page+1) * $scale * $page_scale;
if($total > $n_start) $str.= '';
else $str.= '';
if( $page==0 ) $page = 1;
?>
}
# [page] 페이지 이동
# parameter
# $start : 시작값
# $total : 전체값
# $scale : 표시할갯수
# $page_scale : 이동할 페이지 링크수
# $link : 페이지이동시 따라갈 파라미터
function oldpage($start,$total,$scale,$page_scale,$link){
if($total < 1) return;
if($total > 0) $str.= '처음';
else $str.= '처음';
$page = floor($start / ($scale * $page_scale));
if(($total > $scale) && ($start+1 > $scale*$page_scale)){
$pre_start = $page * $scale * $page_scale - $scale;
$str.= '이전';
}
else $str.= '이전';
for($vj=0; $vj<$page_scale; $vj++) {
$ln = ($page * $page_scale + $vj) * $scale;
$page_num = $page * $page_scale+$vj + 1;
if($ln < $total) {
if($ln != $start) $str.= ''.$page_num.'';
else $str.= '['.$page_num.']';
}
}
$n_start = ($page+1) * $scale * $page_scale;
if($total > $n_start) $str.= '다음';
else $str.= '다음';
$end_start = floor($total/$scale)*$scale;
if($total > $scale) $str.= '맨끝';
else $str.= '맨끝';
?>
}
# [auto_upload] 파일업로드
# parameter
# $filedir : 저장할경로 끝에 / 포함
# $filename : 저장할 로컬 파일명, 저장할로컬 파일명이 없으면, deletefile이 있어도 삭제하지 않음
# $moment : 서버에 임시저장된 파일명
# $previous : 갱신시 이전파일 삭제, 첨부된파일이 없는 상태에는 원파일명만 리턴함
# $is_ext : 허용할 확장자 콤마(,)로 여러개 기입, 없으면 이미지+플래시 파일만 가능
# $is_auto : 1인경우 파일명 자동으로 변경후 저장, 미입력시 원본파일명과 동일하게 저장
# example
# auto_upload("./file/image/",file1_name, $file1, '', '', 1); //insert
# auto_upload("./file/image/",file1_name, $file1, '$row[file1]', '', 1); //update
# form example
#
#
/*
2016년 다시 채크
*/
function auto_upload($filedir,$filename,$moment,$previous,$is_ext,$is_auto)
{
if(!$filename) return $previous;
//점이없는 파일이면 종료
if(substr_count($filename,'.') == 0) {msg($mstr[file][noext]);return;}
//점이 1개이상인 파일명처리를 위해 루프처리
$filename_arr = explode('.',$filename);
$filename_end = count($filename_arr) - 1;
for($i=0;$i<=$filename_end;$i++)
{
if($first) $first.= ".";
$first.= $filename_arr[$i];
if($i == $filename_end) $last = $filename_arr[$i];
}
//허용파일 옶션 미입력시 이미지만 첨부 가능
//if(!$is_ext && exif_imagetype($filedir,$filename) > 16) {print""; return;}
if($is_ext && strpos(",".$is_ext, $last) < 0) {print""; return;}
$newfile = $filename;
//파일명 자동정의
if($is_auto){
$time = explode(" ", microtime());
$usec = (double)$time[0];
$sec = (double)$time[1];
//파일명 자리수를 줄이기 위해 10진수 파일명일 36진수로 변경
$newfile = base_convert(($sec + $usec) * 100000, 10, 36) . rand(100,999) . '.' . $last;
}
//새로운 파일첨부시만 이전파일이 있으면 삭제
if($filename && $previous && is_file($filedir.$previous)) unlink($filedir.$previous);
//업로드전 중복여부 검사
if(is_file($filedir.$newfile)) {print""; return;}
//파일업로드
$result = move_uploaded_file($moment, $filedir.$newfile);
if(!$result) {print""; return;}
return $newfile;
}
# [page] 페이지 이동
# parameter
# $start : 시작값
# $total : 전체값
# $scale : 표시할갯수
# $link : 페이지이동시 따라갈 파라미터
function mobilepg($start,$total,$scale,$link){
$page = floor($start / $scale);
$pre_start = $page * $scale - $scale;
$nxt_page = ($page+1) * $scale;
?>
if(($total > $scale) && ($start+1 > $scale)){?>
이전
}else{?>
이전
}?>
1 / NAN
if($total>$nxt_page){?>
다음
}else{?>
다음
}?>
}
# [page] 페이지 이동
# parameter
# $start : 시작값
# $total : 전체값
# $scale : 표시할갯수
# $page_scale : 이동할 페이지 링크수
# $link : 페이지이동시 따라갈 파라미터
function paging_2($start,$total,$scale,$page_scale,$link){
if($total < 1) return;
unset($str);
if($total > 0) $str.= "첫쪽 | ";
else $str.= "첫쪽 | ";
$page = floor($start / ($scale * $page_scale));
if(($total > $scale) && ($start+1 > $scale*$page_scale)){
$pre_start = $page * $scale * $page_scale - $scale;
$str.= "이전 | ";
}
else $str.= "이전 | ";
for($vj=0; $vj<$page_scale; $vj++) {
$ln = ($page * $page_scale + $vj) * $scale;
$page_num = $page * $page_scale+$vj + 1;
if($ln < $total) {
if($ln != $start) $str.= "$page_num | ";
else $str.= "$page_num | ";
}
}
$n_start = ($page+1) * $scale * $page_scale;
if($total > $n_start) $str.= "다음 | ";
else $str.= "다음 | ";
$end_start = floor($total/$scale)*$scale;
if($total > $scale) $str.= "끝쪽 | ";
else $str.= "끝쪽 | ";
return "";
}
# [page] 페이지 이동
# parameter
# $start : 시작값
# $total : 전체값
# $scale : 표시할갯수
# $page_scale : 이동할 페이지 링크수
# $link : 페이지이동시 따라갈 파라미터
function page($start,$total,$scale,$page_scale,$page_total,$link){
if($total < 1) return;
$str = '';
$page = floor($start / ($scale * $page_scale));
if(($total > $scale) && ($start+1 > $scale*$page_scale)){
$pre_start = $page * $scale * $page_scale - $scale;
$str.= '
';
}
else{
$str.= '
';
}
for($vj=0; $vj<$page_scale; $vj++) {
$ln = ($page * $page_scale + $vj) * $scale;
$page_num = $page * $page_scale+$vj + 1;
if($ln < $total) {
if($ln != $start){
$str.= '
'.$page_num.'
';
}
else{
$str.= '
'.$page_num.'
';
}
}
}
$n_start = ($page+1) * $scale * $page_scale;
if($total > $n_start){
$str.= '
';
}
else{
$str.= '
';
}
if( $page==0 ) $page = 1;
?>
}
function page_total($start,$total,$scale,$page_scale,$page_total,$link){
if($total < 1) return;
$print_page = floor(($start/$scale) + 1);
$print_page_total = floor($total/$scale) + 1;
$page = floor($start / ($scale * $page_scale));
if(($total > $scale) && ($start+1 > $scale*$page_scale)){
$pre_start = $page * $scale * $page_scale - $scale;
$str.= '
';
}
else{
$str.= '
';
}
for($vj=0; $vj<$page_scale; $vj++) {
$ln = ($page * $page_scale + $vj) * $scale;
$page_num = $page * $page_scale+$vj + 1;
if($ln < $total) {
if($ln != $start){
$str.= '
'.$page_num.'
';
}
else{
$str.= '
'.$page_num.'
';
}
}
}
$n_start = ($page+1) * $scale * $page_scale;
if($total > $n_start){
$str.= '
';
}
else{
$str.= '
';
}
if( $page==0 ) $page = 1;
?>
}
// 이메일발송
// send_mail(발송자,발송자이메일,HTML(1 or 2),받는사람이메일,제목,내용
// Return True or False
Function send_mail ($name,$mail,$html,$email,$subject,$body){
$From = "\"$name\"<$mail>";
$ReplyTo = "\"$name\"<$mail>";
if($html==1) $html_head="\nContent-Type:text/html";
$addtional="From : $From\nReply-To:$ReplyTo$html_head";
return mail($email,$subject,$body,$addtional);
}