[제로보드] Lib.php 파일
페이지 정보
작성자 MintState 댓글 0건 조회 21,081회 작성일 08-11-10 13:18본문
[제로보드] 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);
}
?>|
|
댓글목록
등록된 댓글이 없습니다.





[제로보드] Lib.php 파일