웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
유용한 일반 함수 모음;ㅁ;
2003.04.23 18:58
//이것들은 일반 프로그래밍에서 자주 쓰이는 함수들만 모은 것입니다.
//페이지 이동
function go($move = "back",$time = "0") {
if($move == "back") echo("<script>history.back();</script>");
else echo("<meta http-equiv='refresh' content='$time;url=$move'>");
}
//메시지창+히스토리백
function alert($message,$move = "back") {
$print = "<script>window.alert('$message');";
if($move == "back") $print .= "history.back();";
else $print .= "location.href = '$move';";
$print .= "</script>";
echo("$print");
exit;
}
//디비접속
function db() {
global $connect;
if(!$connect) {
$connect = mysql_connect("localhost","testid","1234") or die("MySQL 접속 실패");
mysql_select_db("testdb",$connect) or die("MySQL 접속 실패");
}
}
//단어 필터링
function filter($string,$filter = "",$type = "change",$change = "###") {
if(!$filter) return $string;
$filter = explode(",",$filter);
$fcount = sizeof($filter);
for($i = 0;$i < $fcount;$i++) {
if(eregi($filter[$i],$string)) {
if($type == "error") alert(""$filter[$i]"은(는) 금칙어입니다.");
else $string = str_replace($filter[$i],$change,$string);
}
}
return $string;
}
//문자열 커트
function cutstr($str,$size) {
if(!$size or (strlen($str) <= $size)) return $str;
else for($i = 0;$i < $size;$i++) if(ord($str[$i]) > 127) $over++;
return chop(substr($str,0,$size - $over%2))."...";
}
//테이블 생성여부 체크
function tablecheck($table,$db)
$result = mysql_list_tables($db);
for($i = 0;$i < mysql_num_rows($result);$i++) {
if($table == mysql_tablename($result,$i)) return true;
}
return false;
}
//빠른 DB자료 로드(노가다 도우미;;)
function select($table,$field = "*",$where = "") {
if(!$table) return false;
$q = "select $field from $table";
if($where) $q .= " where $where";
$result = mysql_query($q);
$return = mysql_fetch_array($result);
return $return;
}
//////////아래는 제로보드 lib.php에서 발췌한 함수입니다.
// 빈문자열 경우 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 go($move = "back",$time = "0") {
if($move == "back") echo("<script>history.back();</script>");
else echo("<meta http-equiv='refresh' content='$time;url=$move'>");
}
//메시지창+히스토리백
function alert($message,$move = "back") {
$print = "<script>window.alert('$message');";
if($move == "back") $print .= "history.back();";
else $print .= "location.href = '$move';";
$print .= "</script>";
echo("$print");
exit;
}
//디비접속
function db() {
global $connect;
if(!$connect) {
$connect = mysql_connect("localhost","testid","1234") or die("MySQL 접속 실패");
mysql_select_db("testdb",$connect) or die("MySQL 접속 실패");
}
}
//단어 필터링
function filter($string,$filter = "",$type = "change",$change = "###") {
if(!$filter) return $string;
$filter = explode(",",$filter);
$fcount = sizeof($filter);
for($i = 0;$i < $fcount;$i++) {
if(eregi($filter[$i],$string)) {
if($type == "error") alert(""$filter[$i]"은(는) 금칙어입니다.");
else $string = str_replace($filter[$i],$change,$string);
}
}
return $string;
}
//문자열 커트
function cutstr($str,$size) {
if(!$size or (strlen($str) <= $size)) return $str;
else for($i = 0;$i < $size;$i++) if(ord($str[$i]) > 127) $over++;
return chop(substr($str,0,$size - $over%2))."...";
}
//테이블 생성여부 체크
function tablecheck($table,$db)
$result = mysql_list_tables($db);
for($i = 0;$i < mysql_num_rows($result);$i++) {
if($table == mysql_tablename($result,$i)) return true;
}
return false;
}
//빠른 DB자료 로드(노가다 도우미;;)
function select($table,$field = "*",$where = "") {
if(!$table) return false;
$q = "select $field from $table";
if($where) $q .= " where $where";
$result = mysql_query($q);
$return = mysql_fetch_array($result);
return $return;
}
//////////아래는 제로보드 lib.php에서 발췌한 함수입니다.
// 빈문자열 경우 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));
}
//여타 유용한 일반 함수가 있으면 여러분들께서 코멘트로 추가해주세요;ㅁ;/
댓글 11
-
세죠위그이
2003.04.23 19:26
잘쓰겠습니다. ^^ -
미친개
2003.04.23 19:48
// HTML Tag를 제거하는 함수
function del_html( $str ) {
$str = str_replace( ">", ">",$str );
$str = str_replace( "<", "<",$str );
return $str;
}
이 함수의
str_replace( ">", ">",$str ); 를
str_replace( ">", ">",$str ); 로,
str_replace( "<", "<",$str ); 를
str_replace( "<", "<",$str );로 수정하세요. -
미친개
2003.04.23 19:51
The Mics 님 좋은 자료 감사합니다.
새해 복 마니마니 받고 남은거 있으믄 저한테 좀 보내주세요~ -
TheMics
2003.04.23 19:55
미친개//앗;저게 원래 >하고 <인데 무심코 붙여넣었더니 잡아먹어버리는군요-_-수정했습니다;
지적 감사드려요^^ -
미친개
2003.04.23 20:00
근데 TheMics 님
The Mics 라고 띄워쓰는건가요 아님,
TheMics 라고 붙여써야 하나요?? -
TheMics
2003.04.23 20:05
미친개//그냥 믹스라고 불러주세요^^ -
행복한고니
2003.04.24 06:50
ereg 계열보다는 preg 계열이 빠릅니다. preg계열을 애용하시는 것이 퍼포먼스에 도움이 됩니다.
단어필터링도 ereg를 사용하려다 보니 문제가 많아 보이네요. 필터링할 단어들이 있으면 그걸 가지고 그냥 한꺼번에 preg 계열 함수로 돌리는 것이 좋았을텐데 말이죠. preg_quote 를 적절히 이용하면 정규식 만들기도 훨씬 쉬웠을 거구요. 예를 들어, 100kb의 문자열에서 단어 5개를 필터링 한다고 했을 때 정규식 하나 만들어서 돌리게 되면 100kb 를 한번만 액세스하지만, 위의 알고리즘대로라면 100kb를 5번이나 액세스 해야하겠네요.
del_html은 del 이라기 보다는 html을 허용하지 않는 쪽인 것 같네요. 그냥 htmlspecialchars 함수 사용하시는 게 나을 듯 싶네요.
URL치환쪽에서도 http나 HTTP를 다 써줄 필요없이 그냥 구분자로 i를 써주면 됩니다. mms프로토콜도 MMS로 사용가능한 것으로 알고 있으니까요...
숫자인 것을 검사하는 패턴도 이미 is_numeric 함수가 있는 상태에서는 불필요하다고 봅니다. 제로보드에서 발췌하셨다고 하니 아마도 PHP3 시절에나 쓰던 사용자정의 함수를 그대로 쓰신 듯 합니다. 왜냐하면 PHP4 버전부터는 is_numeric 이 사용가능해졌으니까요. 현실적으로는 불필요하죠.
숫자, 영문자인가를 검사한다고 써놓은 함수는 함수나 변수가 형식에 맞는지 검사하는 함수같군요. 숫자, 영문자만 검사하려면 언더스코어를 없애야겠죠?
ㅡ_ㅡ;; 적고보니 딴지같네요. 떱...
제로보드 자체가 PHP 3 버전대부터 내려온거라 어느 부분에 있어서는 수술이 필요하기도 합니다. 이미 PHP 4 사용자를 대상으로 만들었는데도, PHP3 의 잔재들을 그대로 가지고 있으니까요. -
TheMics
2003.04.24 08:44
행복한고니//필터링 함수는 옛~날 제가 초보시절 ereg만 알았을때 에 만든거라 사실 문제가 좀 있어요;지적 감사합니다^^;
다만 제로보드 관련 함수는 그대로 옮겨왔어요;이점은 어쩔 수 없네요; -
앳플군
2003.04.26 16:54
초보분들의 경우에는 이것을 그대로 가져가서 쓴다고 생각하는것 보단 내걸로 만들어서 사용한다는 생각을 가져야합니다.
그대로 가져다 쓰면 아무 의미가 없습니다. 어렵더라도 일단 기능 설명을 보고 그 설명대로 자신의 생각대로 펑션 만들어보고...
이러면서 배워나가시는것이 의미있습니다. -
플로렐라
2003.04.27 05:13
해설을봐도 잘모르는건 이렇게 사용예를 봐야... -
Simsim
2004.08.12 20:33
&lt; &gt;
제목 | 글쓴이 | 날짜 |
---|---|---|
군대간 친구 남은날짜 계산하기 [6] | xacdo | 2003.04.27 |
유용한 일반 함수 모음;ㅁ; [11] | TheMics | 2003.04.23 |
노프레임+프레임없이 접근막기+게시물 링크하기 [3] | teslaMINT | 2003.04.20 |
PHP 혼자 공부하기 - 12 :: SQL문 [6] | 행복한고니 | 2003.04.20 |
데이터베이스, PHP를 만나면「알짜 사이트로 부활!」 [1] | .maya | 2003.04.18 |
[mics'php] 2. PHP 사용 시스템 구축하기 [3] | TheMics | 2003.04.17 |
[mics'php] 1. PHP란? [8] | TheMics | 2003.04.16 |
PHP 혼자 공부하기 - 11 :: 정규식 실전예제 [9] | 행복한고니 | 2003.04.16 |
PHP 혼자 공부하기 - 10 :: 정규식 패턴 문법 [3] | 행복한고니 | 2003.04.15 |
PHP 혼자 공부하기 - 9 :: 정규식 함수 [3] | 행복한고니 | 2003.04.14 |
PHP 혼자 공부하기 - 8 :: 시간다루기 [18] | 행복한고니 | 2003.04.13 |
PHP 혼자 공부하기 - 7 :: 제어문과 함수 [7] | 행복한고니 | 2003.04.12 |
[mics'php] 들어가기 전에 [1] | TheMics | 2003.04.11 |
PHP 혼자 공부하기 - 6 :: 연산자 [7] | 행복한고니 | 2003.04.11 |
PHP 혼자 공부하기 - 5 :: 변수 [4] | 행복한고니 | 2003.04.10 |
PHP 혼자 공부하기 - 4 :: 미리 정의된 변수 [13] | 행복한고니 | 2003.04.09 |
PHP 혼자 공부하기 - 3 :: 변수형 [8] | 행복한고니 | 2003.04.09 |
PHP 혼자 공부하기 - 2 :: PHP의 시작 [9] | 행복한고니 | 2003.04.09 |
PHP 혼자 공부하기 - 1 :: 준비물 [3] | 행복한고니 | 2003.04.09 |
개판 오분전 세션 - 7 [10] | 미친개 | 2003.04.08 |