[php] [제로보드] Lib.php 파일
로빈아빠
본문
[제로보드] Lib.php 파일
유용한 함수 들이 많습니다. 참고 하시길.
유용한 함수 들이 많습니다. 참고 하시길.
<? /****************************************************************************** * Zeroboard library * 필요부분만 ....... ******************************************************************************/ $_startTime=getmicrotime(); /******************************************************************************* * install 페이지가 아닌 경우 ******************************************************************************/ if(!eregi("install",$PHP_SELF)&&file_exists($_zb_path."config.php")) { //세션 처리 (세션은 3일동안 유효하게 설정) if(!is_dir($_zb_path.$_zbDefaultSetup[session_path])) { mkdir($_zb_path.$_zbDefaultSetup[session_path], 0777); chmod($_zb_path.$_zbDefaultSetup[session_path], 0777); } // Data, Icon, 세션디렉토리의 쓰기 권한이 없다면 에러 처리 if(!is_writable($_zb_path."data")) error("Data 디렉토리의 쓰기 권한이 없습니다<br>제로보드를 사용하기 위해서는 Data 디렉토리의 쓰기 권한이 있어야 합니다"); if(!is_writable($_zb_path."icon")) error("icon 디렉토리의 쓰기 권한이 없습니다<br>제로보드를 사용하기 위해서는 icon 디렉토리의 쓰기 권한이 있어야 합니다"); if(!is_writable($_zb_path.$_zbDefaultSetup[session_path])) error("세션 디렉토리(".$_zb_path.$_zbDefaultSetup[session_path].")의 쓰기 권한이 없습니다<br>제로보드를 사용하기 위해서는 세션디렉토리의 쓰기 권한이 있어야 합니다"); $_sessionStart = getmicrotime(); @session_save_path($_zb_path.$_zbDefaultSetup[session_path]); @session_cache_limiter('nocache, must_revalidate'); session_set_cookie_params(0,"/"); // 세션 변수의 등록 @session_start(); // 조회수 가 512byte를, 투표 세션변수가 256byte를 넘을시 리셋 (개인서버를 이용시에는 조금 더 늘려도 됨) if(strlen($HTTP_SESSION_VARS[zb_hit])>$_zbDefaultSetup[session_view_size]) { $zb_hit=''; session_register("zb_hit"); } if(strlen($HTTP_SESSION_VARS[zb_vote])>$_zbDefaultSetup[session_vote_size]) { $zb_vote=''; session_register("zb_vote"); } // 자동 로그인일때 제대로 된 자동 로그인인지 체크하는 부분 unset($autoLoginData); $autoLoginData = getZBSessionID(); if($autoLoginData[no]) { $zb_logged_no=$autoLoginData[no]; $zb_logged_ip=$REMOTE_ADDR; $zb_logged_time=time(); session_register("zb_logged_no"); session_register("zb_logged_ip"); session_register("zb_logged_time"); $HTTP_SESSION_VARS["zb_logged_no"] = $zb_logged_no; // 세션 값을 체크하여 로그인을 처리 } elseif($HTTP_SESSION_VARS["zb_logged_no"]) { // 로그인 시간이 지정된 시간을 넘었거나 로그인 아이피가 현재 사용자의 아이피와 다를 경우 로그아웃 시킴 if(time()-$HTTP_SESSION_VARS["zb_logged_time"]>$_zbDefaultSetup["login_time"]||$HTTP_SESSION_VARS["zb_logged_ip"]!=$REMOTE_ADDR) { $zb_logged_no=""; $zb_logged_time=""; $zb_logged_ip=""; session_register("zb_logged_no"); session_register("zb_logged_ip"); session_register("zb_logged_time"); session_destroy(); // 유효할 경우 로그인 시간을 다시 설정 } else { // 4.0x 용 세션 처리 $zb_logged_time=time(); session_register("zb_logged_time"); } } $_sessionEnd = getmicrotime(); // 현재 접속자의 데이타를 체크하여 파일로 저장 (회원, 비회원으로 구분해서 저장) $_nowConnectStart = getmicrotime(); if($_zbDefaultSetup[nowconnect_enable]=="true") { $_zb_now_check_intervalTime = time()-$HTTP_SESSION_VARS["zb_last_connect_check"]; if(!$HTTP_SESSION_VARS["zb_last_connect_check"]||$_zb_now_check_intervalTime>$_zbDefaultSetup[nowconnect_refresh_time]) { // 4.0x 용 세션 처리 $zb_last_connect_check = time(); session_register("zb_last_connect_check"); if($HTTP_SESSION_VARS["zb_logged_no"]) { $total_member_connect = $total_connect = getNowConnector($_zb_path."data/now_member_connect.php",$HTTP_SESSION_VARS[zb_logged_no]); $total_guest_connect = getNowConnector_num($_zb_path."data/now_connect.php", TRUE); } else { $total_member_connect = $total_connect = getNowConnector_num($_zb_path."data/now_member_connect.php", TRUE); $total_guest_connect = getNowConnector($_zb_path."data/now_connect.php",$REMOTE_ADDR); } } else { $total_member_connect = $total_connect = getNowConnector_num($_zb_path."data/now_member_connect.php",FALSE); $total_guest_connect = getNowConnector_num($_zb_path."data/now_connect.php",FALSE); } } } $_nowConnectEnd = getmicrotime(); // 익스와 넷스케이프일때 처리 if(eregi("msie",$HTTP_USER_AGENT)) $browser="1"; else $browser="0"; // DB가 설정이 되었는지를 검사 if(!file_exists($config_dir."config.php")&&!eregi("install",$PHP_SELF)) { echo"<meta http-equiv=\"refresh\" content=\"0; url=install.php\">"; exit; } // 마이크로 타임 구함 function getmicrotime() { $microtimestmp = split(" ",microtime()); return $microtimestmp[0]+$microtimestmp[1]; } /****************************************************************************** * 로그인이 되어 있는지를 검사하여 로그인되어있으면 해당 회원의 정보를 저장 *****************************************************************************/ function member_info() { global $HTTP_SESSION_VARS, $member_table, $REMOTE_ADDR, $member, $connect; if(defined("_member_info_included")&&$member[no]) return $member; define("_member_info_included", true); if($member[no]) return $member; if($HTTP_SESSION_VARS["zb_logged_no"]) { $member=mysql_fetch_array(mysql_query("select * from $member_table where no ='".$HTTP_SESSION_VARS["zb_logged_no"]."'")); if(!$member[no]) { unset($member); $member[level] = 10; } } else $member[level] = 10; return $member; } function group_info($no) { global $group_table; $temp=mysql_fetch_array(mysql_query("select * from $group_table where no='$no'")); return $temp; } /****************************************************************************** * 제로보드 전용 함수 *****************************************************************************/ // 글의 아이콘을 뽑아줌;; function get_icon($data) { global $dir; // 글쓴 시간 구함 $check_time=(time()-$data[reg_date])/60/60; // 앞에 붙는 아이콘 정의 if($data[depth]) { if($check_time<=12) $icon="<img src=$dir/reply_new_head.gif border=0 align=absmiddle> "; // 최근 글일경우 else $icon="<img src=$dir/reply_head.gif border=0 align=absmiddle> "; // 답글일때 } else { if($check_time<=12) $icon="<img src=$dir/new_head.gif border=0 align=absmiddle> "; // 최근 글일경우 else $icon="<img src=$dir/old_head.gif border=0 align=absmiddle> "; // 답글이 아닐때 } if($data[headnum]<=-2000000000) $icon="<img src=$dir/notice_head.gif border=0 align=absmiddle> "; // 공지사항일때 else if($data[is_secret]==1) $icon="<img src=$dir/secret_head.gif border=0 align=absmiddle alt='비밀글입니다'> "; return $icon; } // 회원 개인에게 주어지는 아이콘을 찾는 함수 // $type : 1 -> 이름앞에 나타나는 아이콘 // $type : 2 -> 이름을 대신하는 아이콘 function get_private_icon($no, $type) { if($type==1) $dir = "icon/private_icon/"; elseif($type==2) $dir = "icon/private_name/"; if(@file_exists($dir.$no.".gif")) return $dir.$no.".gif"; } // 이름 앞에 붙는 얼굴 아이콘 function get_face($data, $check=0) { global $group; // 이름앞에 붙는 아이콘 정의;; if($group[use_icon]==0) { if($data[ismember]) { if($data[islevel]==2) $face_image="<img src=images/admin2_face.gif border=0 align=absmiddle>"; elseif($data[islevel]==1) $face_image="<img src=images/admin1_face.gif border=0 align=absmiddle>"; else { if($group[icon]) $face_image="<img src=icon/$group[icon] border=0 align=absmiddle>"; else $face_image="<img src=images/member_face.gif border=0 align=absmiddle>"; } } else $face_image="<img src=images/blank_face.gif border=0 align=absmiddle> "; } $temp_name = get_private_icon($data[ismember], "1"); if($temp_name) $face_image="<img src='$temp_name' border=0 align=absmiddle>"; if($group[use_icon]<2&&$data[ismember]) $face_image .= "<b>"; //if($data[ismember]&&$data[parent]) $face_image="<b>"; //elseif($data[parent]) $face_image=""; return $face_image; } // 게시판 관리자인지 체크하는 부분 function check_board_master($member, $board_num) { $temp = split(",",$member[board_name]); for($i=0;$i<count($temp);$i++) { $t = trim($temp[$i]); if($t&&$t==$board_num) return 1; } return 0; } // 초기 헤더를 뿌려주는 부분;;;; function head($body="",$scriptfile="") { global $group, $setup, $dir,$member, $PHP_SELF, $id, $_head_executived, $HTTP_COOKIE_VARS, $width; if($_head_executived) return; $_head_executived = true; $f = @fopen("license.txt","r"); $license = @fread($f,filesize("license.txt")); @fclose($f); print "<!--\n".$license."\n-->\n"; if(!eregi("member_",$PHP_SELF)) $stylefile="skin/$setup[skinname]/style.css"; else $stylefile="style.css"; if($setup[use_formmail]) { $f = fopen("script/script_zbLayer.php","r"); $zbLayerScript = fread($f, filesize("script/script_zbLayer.php")); fclose($f); } // html 시작부분 출력 if($setup[skinname]) { ?> <html> <head> <title><?=$setup[title]?></title> <meta http-equiv=Content-Type content=text/html; charset=EUC-KR> <link rel=StyleSheet HREF=<?=$stylefile?> type=text/css title=style> <?if($setup[use_formmail]) echo $zbLayerScript;?> <?if($scriptfile) include "script/".$scriptfile;?> </head> <body topmargin='0' leftmargin='0' marginwidth='0' marginheight='0' <?=$body?><? if($setup[bg_color]) echo " bgcolor=".$setup[bg_color]." "; if($setup[bg_image]) echo " background=".$setup[bg_image]." "; ?>> <? if($group[header_url]) { @include $group[header_url]; } if($setup[header_url]) { @include $setup[header_url]; } if($group[header]) echo stripslashes($group[header]); if($setup[header]) echo stripslashes($setup[header]); ?> <table border=0 cellspacing=0 cellpadding=0 width=<?=$width?> height=1 style="table-layout:fixed;"><col width=100%></col><tr><td><img src=images/t.gif border=0 width=98% height=1 name=zb_get_table_width><br><img src=images/t.gif border=0 name=zb_target_resize width=1 height=1></td></tr></table> <? } else { ?> <html> <head> <meta http-equiv=Content-Type content=text/html; charset=EUC-KR> <link rel=StyleSheet HREF=style.css type=text/css title=style> <?=$script?> </head> <body topmargin='0' leftmargin='0' marginwidth='0' marginheight='0' <?=$body?>> <? if($group[header_url]) { @include $group[header_url]; } if($group[header]) echo stripslashes($group[header]); } } // 푸터 부분 출력 function foot() { global $width, $group, $setup, $_startTime , $_queryTime , $_foot_executived, $_skinTime, $_sessionStart, $_sessionEnd, $_nowConnectStart, $_nowConnectEnd, $_dbTime, $_listCheckTime, $_zbResizeCheck; if($_foot_executived) return; $_foot_executived = true; $maker_file=@file("skin/$setup[skinname]/maker.txt"); if($maker_file[0]) $maker="/ skin by $maker_file[0]"; else $maker = ""; if($setup[skinname]) { ?> <table border=0 cellpadding=0 cellspacing=0 height=20 width=<?=$width?>> <tr> <td align=right style=font-family:tahoma,굴림;font-size:8pt;line-height:150%;letter-spacing:0px> <font style=font-size:7pt>Copyright 1999-<?=date("Y")?></font> <a href=http://www.zeroboard.com target=_blank onfocus=blur()><font style=font-family:tahoma,굴림;font-size:8pt;>Zeroboard</a> <?=$maker?> </td> </tr> </table> <? if($_zbResizeCheck) { ?> <!-- 이미지 리사이즈를 위해서 처리하는 부분 --> <script> function zb_img_check(){ var zb_main_table_width = document.zb_get_table_width.width; var zb_target_resize_num = document.zb_target_resize.length; for(i=0;i<zb_target_resize_num;i++){ if(document.zb_target_resize[i].width > zb_main_table_width) { document.zb_target_resize[i].width = zb_main_table_width; } } } window.onload = zb_img_check; </script> <? } if($setup[footer]) echo stripslashes($setup[footer]); if($group[footer]) echo stripslashes($group[footer]); if($setup[footer_url]) { @include $setup[footer_url]; } if($group[footer_url]) { @include $group[footer_url]; } ?> </body> </html> <? } else { if($group[footer]) echo stripslashes($group[footer]); if($group[footer_url]) { @include $group[footer_url]; } ?> </body> </html> <? } $_phpExcutedTime = (getmicrotime()-$_startTime)-($_sessionEnd-$_sessionStart)-($_nowConnectEnd-$_nowConnectStart)-$_dbTime-$_skinTime; // 실행시간 출력 echo "\n\n<!--"; if($_sessionStart&&$_sessionEnd) echo"\n Session Excuted : ".sprintf("%0.4f",$_sessionEnd-$_sessionStart); if($_nowConnectStart&&$_nowConnectEnd) echo"\n Connect Checked : ".sprintf("%0.4f",$_nowConnectEnd-$_nowConnectStart); if($_dbTime) echo"\n Query Excuted : ".sprintf("%0.3f",$_dbTime); if($_phpExcutedTime) echo"\n PHP Excuted : ".sprintf("%0.3f",$_phpExcutedTime); if($_listCheckTime) echo"\n Check Lists : ".sprintf("%0.3f",$_listCheckTime); if($_skinTime) echo"\n Skins Excuted : ".sprintf("%0.3f",$_skinTime); if($_startTime) echo"\n Total Excuted Time : ".sprintf("%0.3f",getmicrotime()-$_startTime); echo "\n-->\n"; } // zbLayer 출력 function check_zbLayer($data) { global $zbLayer, $setup, $member, $is_admin, $id, $_zbCheckNum; if($setup[use_formmail]) { if(!$_zbCheckNum) $_zbCheckNum=0; $data[name]=stripslashes($data[name]); $data[name]=urlencode($data[name]); if($data[homepage]){ $data[homepage]=str_replace("http://","",stripslashes($data[homepage])); $data[homepage]=urlencode($data[homepage]); $data[homepage]="http://".$data[homepage]; } $data[email]=base64_encode($data[email]); $_zbCheckNum++; $_zbCount=1; if(($member[is_admin]==1||$member[is_admin]==2)&&$data[ismember]) { $traceID = $data[ismember]; $traceType="t"; $isAdmin=1; } elseif(($member[is_admin]==1||$member[is_admin]==2)&&!$data[ismember]) { $traceID = $data[name]; $traceType="tn"; $isAdmin=1; } if($member[no]) $isMember = 1; if($data[ismember]<1) $data[ismember]=""; $zbLayer = $zbLayer."\nprint_ZBlayer('zbLayer$_zbCheckNum', '$data[homepage]', '$data[email]', '$data[ismember]', '$id', '$data[name]', '$traceID', '$traceType', '$isAdmin', '$isMember');"; } return $_zbCount; } // 에러 메세지 출력 function error($message, $url="") { global $setup, $connect, $dir, $config_dir; $dir="skin/".$setup[skinname]; if($url=="window.close") { $message=str_replace("<br>","\\n",$message); $message=str_replace("\"","\\\"",$message); ?> <script> alert("<?=$message?>"); window.close(); </script> <? } else { head(); if($setup[skinname]) { include "skin/$setup[skinname]/error.php"; } else { include $config_dir."error.php"; } foot(); } if($connect) @mysql_close($connect); exit; } // 현재 아이피와 주어진 아이피 리스트를 비교하여 아이피 블럭 대상자인지 검사 function check_blockip() { global $setup; $avoid_ip=explode(",",$setup[avoid_ip]); $count = count($avoid_ip); for($i=0;$i<$count;$i++) { if(!isblank($avoid_ip[$i])&&eregi($avoid_ip[$i],$REMOTE_ADDR)) Error("차단당한 IP 주소입니다."); } } // 접속자수 체크 function getNowConnector($filename,$div) { global $_zbDefaultSetup; $_str = trim(zReadFile($filename)); $num = 0; if($_str) { $_str = str_replace("<?/*","",$_str); $_str = str_replace("*/?>","",$_str); $_connector = explode(":",$_str); $_sizeConnector = count($_connector); $_nowtime = date("YmdHi"); unset($_realNowConnector); if($_sizeConnector) { for($i=0;$i<$_sizeConnector;$i++) { $_time = substr($_connector[$i],0,12); $_div = substr($_connector[$i],12); if($_time+$_zbDefaultSetup[nowconnect_time]>=$_nowtime&&$_div!=$div) { $_realNowConnector.=$_time.$_div.":"; $num++; } } } } $_realNowConnector.=$_nowtime.$div; //check_fileislocked($filename); zWriteFile($filename, "<?/*".$_realNowConnector."*/?>"); return $num; } // 접속자수 구하기 function getNowConnector_num($filename, $FLAG=FALSE) { global $_zbDefaultSetup; $_str = trim(zReadFile($filename)); $num = 0; if($_str) { $_str = str_replace("<?/*","",$_str); $_str = str_replace("*/?>","",$_str); $_connector = explode(":",$_str); $_sizeConnector = count($_connector); $_nowtime = date("YmdHi"); unset($_realNowConnector); if($_sizeConnector) { for($i=0;$i<$_sizeConnector;$i++) { $_time = substr($_connector[$i],0,12); $_div = substr($_connector[$i],12); if($_time+$_zbDefaultSetup[nowconnect_time]>=$_nowtime) { $_realNowConnector.=$_time.$_div.":"; $num++; } } } } if($FLAG) { //check_fileislocked($filename); zWriteFile($filename, "<?/*".$_realNowConnector."*/?>"); } return $num; } // 제로보드 자동 로그인 세션값이 있는지 판단해서 있으면 해당 값을 리턴 function getZBSessionID() { global $HTTP_COOKIE_VARS, $_zb_path, $_zbDefaultSetup; $zbSessionID = $HTTP_COOKIE_VARS[ZBSESSIONID]; if(!$zbSessionID) return ""; $str = zReadFile($_zb_path.$_zbDefaultSetup[session_path]."/zbSessionID_".$zbSessionID.".php"); if(!$str) { @setcookie("ZBSESSIONID", "", time()+60*60*24*365, "/"); return ""; } $str = explode("\n",$str); $data[no] = trim($str[1]); $data[time] = trim($str[2]); $newZBSessionID = md5($data[no]."-^A-".$data[time]); if($newZBSessionID != $zbSessionID) { @setcookie("ZBSESSIONID", "", time()+60*60*24*365, "/"); return ""; } if(!$_zb_path) { z_unlink($_zb_path.$_zbDefaultSetup[session_path]."/zbSessionID_".$zbSessionID.".php"); makeZBSessionID($data[no]); } return $data; } // 제로보드 자동 로그인 세션값을 만드는 함수 function makeZBSessionID($no) { global $HTTP_COOKIE_VARS, $_zb_path, $_zbDefaultSetup; $zbSessionID = md5($no."-^A-".time()); $newStr = "<?/*\n$no\n".time()."\n*/?>"; zWriteFile($_zb_path.$_zbDefaultSetup[session_path]."/zbSessionID_".$zbSessionID.".php", $newStr); @setcookie("ZBSESSIONID", $zbSessionID, time()+60*60*24*365, "/"); } // 제로보드 자동 로그인 세션값 파기시키는 함수 function destroyZBSessionID($no) { global $HTTP_COOKIE_VARS, $_zb_path, $_zbDefaultSetup; $zbSessionID = $HTTP_COOKIE_VARS[ZBSESSIONID]; z_unlink($_zb_path.$_zbDefaultSetup[session_path]."/zbSessionID_".$zbSessionID.".php"); @setcookie("ZBSESSIONID", "", time()+60*60*24*365, "/"); } // 제로보드의 기본 설정 파일을 읽어오는 함수 function getDefaultSetup() { global $_zb_path; $data = zReadFile($_zb_path."setup.php"); $data = str_replace("<?/*","",$data); $data = str_replace("*/?>","",$data); $data = explode("\n",$data); $_c = count($data); unset($defaultSetup); for($i=0;$i<$_c;$i++) { if(!ereg(";",$data[$i])&&strlen(trim($data[$i]))) { $tmpStr = explode("=",$data[$i]); $name = trim($tmpStr[0]); $value = trim($tmpStr[1]); $defaultSetup[$name]=$value; } } if(!$defaultSetup[url]) $defaultSetup[url] = $HTTP_HOST; if(!$defaultSetup[sitename]) $defaultSetup[sitename] = $HTTP_HOST; if(!$defaultSetup[session_path]) $defaultSetup[session_path] = "data/__zbSessionTMP"; if(!$defaultSetup[session_view_size]) $defaultSetup[session_view_size] = 512; if(!$defaultSetup[session_vote_size]) $defaultSetup[session_vote_size] = 256; if(!$defaultSetup[login_time]) $defaultSetup[login_time] = 60*30; if(!$defaultSetup[nowconnect_enable]) $defaultSetup[nowconnect_enable] = "true"; if(!$defaultSetup[nowconnect_refresh_time]) $defaultSetup[nowconnect_refresh_time] = 60*3; if(!$defaultSetup[nowconnect_time]) $defaultSetup[nowconnect_tim] = 60*5; if(!$defaultSetup[enable_hangul_id]) $defaultSetup[enable_hangul_id] = "false"; if(!$defaultSetup[check_email]) $defaultSetup[check_email] = "true"; if(!$defaultSetup[memo_limit_time]) $defaultSetup[memo_limit_time] = 7; $defaultSetup[memo_limit_time] = 60 * 60 * 24 * $defaultSetup[memo_limit_time]; return $defaultSetup; } /****************************************************************************** * 일반 함수 *****************************************************************************/ // 빈문자열 경우 1을 리턴 function isblank($str) { $temp=str_replace(" ","",$str); $temp=str_replace("\n","",$temp); $temp=strip_tags($temp); $temp=str_replace(" ","",$temp); $temp=str_replace(" ","",$temp); if(eregi("[^[:space:]]",$temp)) return 0; return 1; } // 숫자일 경우 1을 리턴 function isnum($str) { if(eregi("[^0-9]",$str)) return 0; return 1; } // 숫자, 영문자 일경우 1을 리턴 function isalNum($str) { if(eregi("[^0-9a-zA-Z\_]",$str)) return 0; return 1; } // HTML Tag를 제거하는 함수 function del_html( $str ) { $str = str_replace( ">", ">",$str ); $str = str_replace( "<", "<",$str ); return $str; } // 주민등록번호 검사 function check_jumin($jumin) { $weight = '234567892345'; // 자리수 weight 지정 $len = strlen($jumin); $sum = 0; if ($len <> 13) return false; for ($i = 0; $i < 12; $i++) { $sum = $sum + (substr($jumin,$i,1)*substr($weight,$i,1)); } $rst = $sum%11; $result = 11 - $rst; if ($result == 10) $result = 0; else if ($result == 11) $result = 1; $ju13 = substr($jumin,12,1); if ($result <> $ju13) return false; return true; } // E-mail 주소가 올바른지 검사 function ismail( $str ) { if( eregi("([a-z0-9\_\-\.]+)@([a-z0-9\_\-\.]+)", $str) ) return $str; else return ''; } // E-mail 의 MX를 검색하여 실제 존재하는 메일인지 검사 function mail_mx_check($email) { if(!ismail($email)) return false; list($user, $host) = explode("@", $email); if (checkdnsrr($host, "MX") or checkdnsrr($host, "A")) return true; else return false; } // 홈페이지 주소가 올바른지 검사 function isHomepage( $str ) { if(eregi("^http://([a-z0-9\_\-\./~@?=&-\#{5,}]+)", $str)) return $str; else return ''; } // URL, Mail을 자동으로 체크하여 링크만듬 function autolink($str) { // URL 치환 $homepage_pattern = "/([^\"\'\=\>])(mms|http|HTTP|ftp|FTP|telnet|TELNET)\:\/\/(.[^ \n\<\"\']+)/"; $str = preg_replace($homepage_pattern,"\\1<a href=\\2://\\3 target=_blank>\\2://\\3</a>", " ".$str); // 메일 치환 $email_pattern = "/([ \n]+)([a-z0-9\_\-\.]+)@([a-z0-9\_\-\.]+)/"; $str = preg_replace($email_pattern,"\\1<a href=mailto:\\2@\\3>\\2@\\3</a>", " ".$str); return $str; } // 파일 사이즈를 kb, mb에 맞추어서 변환해서 리턴 function getfilesize($size) { if(!$size) return "0 Byte"; if($size<1024) { return ($size." Byte"); } elseif($size >1024 && $size< 1024 *1024) { return sprintf("%0.1f KB",$size / 1024); } else return sprintf("%0.2f MB",$size / (1024*1024)); } // 문자열 끊기 (이상의 길이일때는 ... 로 표시) function cut_str($msg,$cut_size) { if($cut_size<=0) return $msg; if(ereg("\[re\]",$msg)) $cut_size=$cut_size+4; for($i=0;$i<$cut_size;$i++) if(ord($msg[$i])>127) $han++; else $eng++; $cut_size=$cut_size+(int)$han*0.6; $point=1; for ($i=0;$i<strlen($msg);$i++) { if ($point>$cut_size) return $pointtmp."..."; if (ord($msg[$i])<=127) { $pointtmp.= $msg[$i]; if ($point%$cut_size==0) return $pointtmp."..."; } else { if ($point%$cut_size==0) return $pointtmp."..."; $pointtmp.=$msg[$i].$msg[++$i]; $point++; } $point++; } return $pointtmp; } // 페이지 이동 스크립트 function movepage($url) { global $connect; echo"<meta http-equiv=\"refresh\" content=\"0; url=$url\">"; if($connect) @mysql_close($connect); exit; } // input 또는 textarea의 사이즈를 넷쓰와 익스일때 구분하여 리턴 function size($size) { global $browser; if(!$browser) return " size=".($size*0.6)." "; else return " size=$size "; } function size2($size) { global $browser; if(!$browser) return " cols=".($size*0.6)." "; else return " cols=$size "; } // 메일 보내는 함수 function zb_sendmail($type, $to, $to_name, $from, $from_name, $subject, $comment, $cc="", $bcc="") { $recipient = "$to_name <$to>"; if($type==1) $comment = nl2br($comment); $headers = "From: $from_name <$from>\n"; $headers .= "X-Sender: <$from>\n"; $headers .= "X-Mailer: PHP ".phpversion()."\n"; $headers .= "X-Priority: 1\n"; $headers .= "Return-Path: <$from>\n"; if(!$type) $headers .= "Content-Type: text/plain; "; else $headers .= "Content-Type: text/html; "; $headers .= "charset=euc-kr\n"; if($cc) $headers .= "cc: $cc\n"; if($bcc) $headers .= "bcc: $bcc"; $comment = stripslashes($comment); $comment = str_replace("\n\r","\n", $comment); return mail($recipient , $subject , $comment , $headers); } // 지정된 디렉토리의 파일 정보를 구함 function get_dirinfo($path) { $handle=@opendir($path); while($info = readdir($handle)) { if($info != "." && $info != "..") { $dir[] = $info; } } closedir($handle); return $dir; } // 파일을 삭제하는 함수 function z_unlink($filename) { @chmod($filename,0777); $handle = @unlink($filename); if(@file_exists($filename)) { @chmod($filename,0775); $handle=@unlink($filename); } return $handle; } // 지정된 파일의 내용을 읽어옴 function zReadFile($filename) { if(!file_exists($filename)) return ''; $f = fopen($filename,"r"); $str = fread($f, filesize($filename)); fclose($f); return $str; } // 지정된 파일에 주어진 데이타를 씀 function zWriteFile($filename, $str) { $f = fopen($filename,"w"); $lock=flock($f,2); if($lock) { fwrite($f,$str); } flock($f,3); fclose($f); } // 지정된 파일이 Locking중인지 검사 function check_fileislocked($filename) { $f=@fopen($filename,w); $count = 0; $break = true; while(!@flock($f,2)) { $count++; if($count>10) { $break = false; break; } } if($break!=false) @flock($f,3); @fclose($f); } // 순환적으로 디렉토리를 삭제 function zRmDir($path) { $directory = dir($path); while($entry = $directory->read()) { if ($entry != "." && $entry != "..") { if (Is_Dir($path."/".$entry)) { zRmDir($path."/".$entry); } else { @UnLink ($path."/".$entry); } } } $directory->close(); @RmDir($path); } ?>
관련링크
댓글목록
등록된 댓글이 없습니다.