달력

0

« 2025/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2024. 3. 6. 11:14

귀차니즘 sql injection PHP2024. 3. 6. 11:14

$string_404 ="<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL ".$_SERVER['PHP_SELF']." was not found on this server..</p>
</body></html>
";

 

탭이 왜이래? 수정하기 귀찮...

 

//검색등 $params값으로 들어오는 $_REQUEST값에 이상한게 있으면 로그로 기록한다.

//$_POST, $_GET 도 $_REQUEST 검사가능

// 로그인이나 검색 등 파라메터로 받는것들 체크용. 글쓰기 댓글쓰기등 체크에는 절대 사용금지.
//미리 체크하고 싶은 항목의 이름을 입력해준다. 예) check_request_attack('cate|page|search|scan');

function check_request_attack($params){
global $WEB_ROOTPATH, $string_404, $usercode;
if(!$params) return '';
$ck_param = explode('|', $params); $cntp = COUNT($ck_param);

 

// 차단할것들지금까지 확인된 애들.. '|' 로 구분
$noparam = 'nslookup|foreach|waitfor|\'||"|=|))|]]|}}|--|..|./|()|etc/|#$| or | and |passwd|set(|sleep(|assert(|md5(|chr(|hex(|decode(|xss.|concat(|_schema|union|script|cast(';


$ck_words = explode('|', $noparam);$cnt = COUNT($ck_words);


for($i=0; $i<$cntp; $i++){
$rqname = $ck_param[$i];
if(isset($_REQUEST[$rqname])){
$string=implode("", explode("\\", trim($_REQUEST[$rqname])));    

$rqval = stripslashes(trim($string)); //슬래시지우고


for($j=0; $j<$cnt; $j++){
if(stripos($rqval, $ck_words[$j]) !== false){ //로그기록한다.
$ss_time = date("Y-m-d_H:i", time()); $ss_ip = $_SERVER['REMOTE_ADDR']; $ss_proxy=$ENV['HTTP_X_FORWARDED_FOR']; $ss_browser = $_SERVER['HTTP_USER_AGENT'];
$svline = $ss_time.'|'.$_SERVER['PHP_SELF'].'| '.$rqname.' ** '.$ck_words[$j].' |'.$usercode.'|'.$ss_ip.'|'.$ss_proxy.'|'.$ss_browser."|\r\n";

 

if(!$WEB_ROOTPATH){ $WEB_ROOTPATH = '/home/daehan/www.daehan'; }
$svfile = $WEB_ROOTPATH.'/1_server_attack.cgi';

$fp = fopen($svfile, "a+"); flock($fp, LOCK_EX); fwrite($fp, $svline); flock($fp, LOCK_UN); fclose($fp);


//unset($_REQUEST[$rqname]); break; //에러로 중지하는것 없이 해당변수를 지우고 계속 진행
echo $string_404; exit; //페이지 없다고 표시하고 짤없이 멈춘다.
} //제한된게 있다면


}  //of $j
} //of isset
} //of for $i
} //of function

:
Posted by 비개인오후
2012. 10. 11. 15:59

kisa castle-php 소스 중 정책리스트 참고. PHP2012. 10. 11. 15:59

// 정책 리스트 목록

$LIST['sql_injection'] = array(

"delete[[:space:]]+from", 

"drop[[:space:]]+database", 

"drop[[:space:]]+table", 

"drop[[:space:]]+column", 

"drop[[:space:]]+procedure", 

"create[[:space:]]+table", 

"update[[:space:]]+.*set",

"insert[[:space:]]+into.*values",

"select[[:space:]]+.*from",

"bulk[[:space:]]+insert", 

"union[[:space:]]+select", 

"or[[:space:]]+['\"[[:space:]]]*[[:alnum:]]+['\"[[:space:]]]*[[:space:]]*=[[:space:]]*['\"[[:space:]]]*[[:alnum:]]+",

"or[[:space:]]+[[:alnum:]]+[[:space:]]*=[[:space:]]*[[:alnum:]]+",

"alter[[:space:]]+table", 

"into[[:space:]]+outfile", 

"load[[:space:]]+data",

"declare.+varchar.+set"

);


$LIST['xss'] = array(

"<script", 

"script[[:space:]]+.?src[[:space:]]*=", 

"%3cscript", 

"&#x3c;script", 

"javascript:", 

"expression[[:space:]]*\(", 

"xss:[[:space:]].*\(", 

"document\.cookie", 

"document\.location", 

"document\.write", 

"onAbort[[:space:]]*=", 

"onBlur[[:space:]]*=", 

"onChange[[:space:]]*=", 

"onClick[[:space:]]*=", 

"onDblClick[[:space:]]*=", 

"onDragDrop[[:space:]]*=", 

"onError[[:space:]]*=", 

"onFocus[[:space:]]*=", 

"onKeyDown[[:space:]]*=", 

"onKeyPress[[:space:]]*=", 

"onKeyUp[[:space:]]*=", 

"onLoad[[:space:]]*=", 

"onMouseDown[[:space:]]*=", 

"onMouseMove[[:space:]]*=", 

"onMouseOut[[:space:]]*=", 

"onMouseOver[[:space:]]*=", 

"onMouseUp[[:space:]]*=", 

"onMove[[:space:]]*=", 

"onReset[[:space:]]*=", 

"onResize[[:space:]]*=", 

"onSelect[[:space:]]*=", 

"onSubmit[[:space:]]*=", 

"onUnload[[:space:]]*=", 

"location.href[[:space:]]*="

);


:
Posted by 비개인오후
어디서 퍼왔는지는 모른다.

//한글문제로 인한 전용변경함수
function Han_replace($search, $to, $str){
 $ESC = "\x1b"; // 키보드로 입력할 수 없는 [Esc]코드,
 $pattern1 = "/([\x80-\xff].)/"; $pattern2 = "/([\x80-\xff].)$ESC/";
 $str = preg_replace( $pattern1, "\\1$ESC", $str ); // 모든 한글단어 뒤에 $ESC를 추가함.
 $search = preg_replace( $pattern1, "\\1$ESC", $search ); // 찾을 문자도 같은 패턴으로 바꿈,
 $str = str_replace( $search, $to, $str ); // 일단 때려 바꾸고.
 return preg_replace( $pattern2, "\\1", $str ); // 한글 뒤에 추가했던 $ESC를 지움.
}

EUC-KR 검색에서 불필요한 문자들 제거하다 보니 한글2바이트 문제가 생겼다.
한글에서 str_replace가 안될 때 쓰면 된다. 뭐 다른것으로 써도 상관없다만...

function remove_sp_chars($del_string){
$tmp_sa_cmt = trim($del_string);
// $tmp_sa_cmt = str_replace(" ", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("+", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("-", "", $tmp_sa_cmt); //20090914 검색으로 뻘짓하는 인간때문에 추가
$tmp_sa_cmt = str_replace(".", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace(",", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("_", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("-", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("ㅜ", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("ㅠ", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace(":", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace(";", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("~", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("/", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("\\", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("(", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace(")", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("[", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("]", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("\"", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("'", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("\r\n", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("\n", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("@", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("&", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("^", "", $tmp_sa_cmt);  $tmp_sa_cmt = str_replace("#", "", $tmp_sa_cmt); //^^문자를 제거.
//불필요한 자음과 모음을 전부 제거한다.
$tmp_sa_cmt=Han_replace('ㅂ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅈ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㄷ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㄱ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅅ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅛ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅕ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅑ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅐ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅔ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅁ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㄴ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅇ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㄹ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅎ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅗ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅓ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅏ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅣ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅋ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅌ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅊ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅍ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅠ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅜ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅡ', '', $tmp_sa_cmt);
return $tmp_sa_cmt;
}
:
Posted by 비개인오후
2009. 11. 25. 18:53

대용량파일 다운로드 PHP2009. 11. 25. 18:53

윈도우+PHP4 환경에서 테스트한 내용입니다.

보통 다운로드를 사용할때
$fp = fopen($filename, "rb");
if (!fpassthru($fp)) {
fclose($fp);
}
이런식으로 다운로드를 합니다.
하지만 용량이 100M정도를 저렇게하면 웹서버가 CPU100%를 차지하면서 다운로드를 멈쳐도 서버가 살아나지 않더군요.
PHP의 memory_limit를 200M정도로 늘려도 현상은 같았습니다.

코드를 아래와 같이 바꾸면 문제가 해결됩니다.
$fp = fopen($filename, "rb");
while(!feof($fp)) {
echo fread($fp, 100*1024);
flush();
}
fclose ($fp);

처음 서버에서 파일을 읽을때 CPU가 100%를 차지하지만 다운로드가 시작되면 CPU점유율이
다시 내려갑니다.

아마 파일을 한번에 메모리에 읽는경우와 조금씩읽는방법의 차이인듯하네요.

제일 좋은건 그냥 URL주소로 다운받는건데( header("location:$filename") )
한글주소일경우 브라우져에 따른 문제와 다운로드 파일명등의 문제가 있네요.

더 좋은 방법있으면 소개해주세요~
:
Posted by 비개인오후
2009. 11. 5. 11:54

문자열체크관련 간단한 함수 몇가지 PHP2009. 11. 5. 11:54

//PHP공부하던 초기것이니 아마 제로보드것을 퍼왔을 듯...

// 빈문자열 경우 1을 리턴
function isblank($str){
$temp=str_replace(" ","",$str); $temp=str_replace("\n","",$temp); $temp=strip_tags($temp);
$temp=str_replace("&nbsp;","",$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; }

//영문자 일경우 1을 리턴
function isalpha($str){ if(eregi("[^A-Z\_]",$str)) return 0; return 1; }

// 문자열에 한글이 있다면 1을 리턴 //한글이 있는지 없는지 검사-잘 안맞아
function ishangul_in($str){ if(preg_match('/^[\x00-\0x7E]+$/', $str)) return 0; return 1; }
:
Posted by 비개인오후
2009. 11. 5. 11:47

숫자에관련된 인코딩 및 디코딩 PHP2009. 11. 5. 11:47

/////////////// 숫자에관련된 인코딩 및 디코딩
//미리 숫자, 문자 치환용 10의 배열을 만들어 두고 맞게 하는거다. 이것도 간단한 눈속임용.

function stamp_encrypt($scnum){ //시간스탬프나 숫자를 입력받아 영문자로 변환
if(!$scnum) return;
$en_st = array("L", "H", "K", "W", "P", "V", "N", "S", "D", "F");
$en_kcode[0] = array("X", "M", "Q", "S", "U", "O", "E", "K", "G", "A");
$en_kcode[1] = array("B", "F", "I", "J", "D", "M", "K", "H", "Q", "G");
$en_kcode[2] = array("O", "R", "Q", "S", "P", "L", "V", "K", "G", "C");
$en_kcode[3] = array("A", "C", "E", "G", "K", "M", "P", "R", "T", "I");
$en_kcode[4] = array("D", "M", "S", "Q", "R", "X", "F", "K", "W", "E");
$en_kcode[5] = array("X", "K", "Q", "S", "M", "B", "Z", "E", "F", "A");
$en_kcode[6] = array("X", "W", "Z", "Y", "A", "O", "E", "K", "Q", "D");
$en_kcode[7] = array("C", "E", "J", "L", "T", "X", "Y", "K", "G", "H");
$en_kcode[8] = array("F", "R", "T", "S", "G", "O", "E", "K", "U", "B");
$en_kcode[9] = array("L", "H", "K", "W", "P", "V", "N", "S", "D", "F");
$TG_str = (string)$scnum;
// $key = substr($TG_str,-1,1);
$key = rand(0,9); //랜덤
$encoder_key = $en_st[$key]; //사용한 코드의 식별자. 변환스트링 마지막에 추가한다.
$en_code = $en_kcode[$key]; //
for($i=0; $i < 10; $i++){ $TG_str = str_replace($i, $en_code[$i], $TG_str); }
return $encoder_key.$TG_str;
}

function stamp_decrypt($scnum){ //시간스탬프나 숫자를 입력받아 영문자로 변환
if(!$scnum) return;
$en_st = array("L", "H", "K", "W", "P", "V", "N", "S", "D", "F");
$encoder_key = substr($scnum,0,1); //변환기준식별자를 얻어온다.
$tmplen = strlen($scnum); $TG_str = substr($scnum, 1); //실질적인 데이터문자열을 뽑아온다.
$key = 99;
for($i=0;$i < 10; $i++){
if($en_st[$i]==$encoder_key){ $key = $i; break; }
}
if($key == 99) return; //찾은 기준키가 없으므로 그냥 나간다.
$en_kcode[0] = array("X", "M", "Q", "S", "U", "O", "E", "K", "G", "A");
$en_kcode[1] = array("B", "F", "I", "J", "D", "M", "K", "H", "Q", "G");
$en_kcode[2] = array("O", "R", "Q", "S", "P", "L", "V", "K", "G", "C");
$en_kcode[3] = array("A", "C", "E", "G", "K", "M", "P", "R", "T", "I");
$en_kcode[4] = array("D", "M", "S", "Q", "R", "X", "F", "K", "W", "E");
$en_kcode[5] = array("X", "K", "Q", "S", "M", "B", "Z", "E", "F", "A");
$en_kcode[6] = array("X", "W", "Z", "Y", "A", "O", "E", "K", "Q", "D");
$en_kcode[7] = array("C", "E", "J", "L", "T", "X", "Y", "K", "G", "H");
$en_kcode[8] = array("F", "R", "T", "S", "G", "O", "E", "K", "U", "B");
$en_kcode[9] = array("L", "H", "K", "W", "P", "V", "N", "S", "D", "F");
$en_code = $en_kcode[$key];
for($i=0; $i < 10; $i++){ $TG_str = str_replace($en_code[$i], $i, $TG_str); }
if(isnum($TG_str)==1){ return (int)$TG_str; }
return;
}
:
Posted by 비개인오후
/////////////// 전화번호, 핸드폰번호에 대한 인코딩,디코딩
//단순하게 숫자와 문자의 1:1 치환이다. 간단하게 눈속임용으로 -_-;;

function phone1_encrypt($pon_no){
if(!$pon_no) return;
$en_code = array("X", "M", "Q", "S", "U", "O", "E", "K", "G", "A"); $tmp = $pon_no;
for($i=0; $i < 10; $i++){ $tmp = str_replace($i, $en_code[$i], $tmp); }
$tmp = str_replace("-", "V", $tmp);$tmp = str_replace(")", "Z", $tmp);$tmp = str_replace("(", "B", $tmp);$tmp = str_replace(".", "R", $tmp);
return $tmp;
}

function phone1_decrypt($pon_no){
if(!$pon_no) return;
$en_code = array("X", "M", "Q", "S", "U", "O", "E", "K", "G", "A"); $tmp = $pon_no;
for($i=0; $i < 10; $i++){ $tmp = str_replace($en_code[$i], $i, $tmp); }
$tmp = str_replace("V", "-", $tmp);$tmp = str_replace("Z", ")", $tmp);$tmp = str_replace("B", "(", $tmp);$tmp = str_replace("R", ".", $tmp);
return $tmp;
}

function phone2_encrypt($pon_no){
if(!$pon_no) return;
$en_code = array("T", "P", "Q", "B", "L", "W", "K", "C", "R", "Z"); $tmp = $pon_no;
for($i=0; $i < 10; $i++){ $tmp = str_replace($i, $en_code[$i], $tmp); }
$tmp = str_replace("-", "S", $tmp);$tmp = str_replace(")", "A", $tmp);$tmp = str_replace("(", "D", $tmp);$tmp = str_replace(".", "F", $tmp);
return $tmp;
}

function phone2_decrypt($pon_no){
if(!$pon_no) return;
$en_code = array("T", "P", "Q", "B", "L", "W", "K", "C", "R", "Z"); $tmp = $pon_no;
for($i=0; $i < 10; $i++){ $tmp = str_replace($en_code[$i], $i, $tmp); }
$tmp = str_replace("S", "-", $tmp);$tmp = str_replace("A", ")", $tmp);$tmp = str_replace("D", "(", $tmp);$tmp = str_replace("F", ".", $tmp);
return $tmp;
}
:
Posted by 비개인오후
2009. 11. 5. 11:39

URL주소에서 긴링크를 처리 PHP2009. 11. 5. 11:39

//////문자열을 잘라내는 함수
function CutString($str, $start, $end, $tailmark=''){
$strcnt = strlen($str);
$result = substr($str, $start, $end); // 일단 문자열을 자른다.
preg_match('/^([\x00-\x7e]|.{2})*/', $result, $string); // 뒤에 오는 ?제거
if($strcnt > $end){ return $string[0].$tailmark; }else{ return $string[0]; }
}
//////문자열을 뒤에서부터 잘라내는 함수
function CutStringR($str,$len,$head=""){
if(strlen($str)<=$len){ return $str; }
$str2=substr($str,$len*-1);
$size=strlen($str2);
for($i=$size,$j=1;$j<=$size;$i--){
    $chr=substr($str2,$j*-1,1);
    if(ord($chr)>127){ $j++; $chr=substr($str,$j*-1,1).$chr; }
$result=$chr.$result;
$j++;
  }
return $head.$result;
}



///////////////////URL주소에서 긴링크를 처리하는부분이다.
//파일이름만 추출해서 하는 부분은 뺐다.
//몇개 관련된게 있어서 수정하기 귀찮아서리... 단순히 문자열 앞뒤로 자른 후 줄임표만 ㅋㅋㅋ
function LinkString($linkstr, $cutcount){
$tmp = explode("://", $linkstr);
$linkstr = trim($linkstr); $linkenc = trim($tmp[1]);
$encoded_url = $tmp[0]."://".urlencode($linkenc);
if(strlen($linkstr) >= $cutcount){
$halfcount = (int)($cutcount/2); $halfcount = $halfcount-3;
$aaa1 = CutString($linkstr, 0, $halfcount);//문자열에서 앞부분 추출
$aaa2 = CutStringR($linkstr, $halfcount);//문자열에서 뒷부분 추출
$linkstr = $aaa1."...".$aaa2;
}
return $linkstr;
}
:
Posted by 비개인오후
2009. 11. 5. 11:28

문자열을 뒤에서부터 잘라내는 함수 PHP2009. 11. 5. 11:28

//////문자열을 뒤에서부터 잘라내는 함수 ecu-kr용
function CutStringR($str,$len,$head=""){
if(strlen($str)<=$len){ return $str; }
$str2=substr($str,$len*-1);
$size=strlen($str2);
for($i=$size,$j=1;$j<=$size;$i--){
    $chr=substr($str2,$j*-1,1);
    if(ord($chr)>127){ $j++; $chr=substr($str,$j*-1,1).$chr; }
$result=$chr.$result;
$j++;
  }
return $head.$result;
}
:
Posted by 비개인오후
2009. 11. 5. 11:28

substr 문자열을 잘라내는 함수 euc-kr용 PHP2009. 11. 5. 11:28

//////문자열을 잘라내는 함수 euc-kr용(바이트단위로 자른다. 한글은2바이트, 영문은 1바이트)
/////CutString(원본문자열, 시작위치보통0, 글자수, 줄임표를 붙일지여부)
function CutString($str, $start, $end, $tailmark=''){
$strcnt = strlen($str);
$result = substr($str, $start, $end); // 일단 문자열을 자른다.
preg_match('/^([\x00-\x7e]|.{2})*/', $result, $string); // 한글어설프게 잘릴 때 뒤에 오는 ?를 제거
if($strcnt > $end){ return $string[0].$tailmark; }else{ return $string[0]; }
}

$str = '아놔 태연누나 팬클럽 검색하니 왜 채연누나가 나와?';
$result = CutString($str, 0, 20, '…'); // 자른 뒤 뒤에  … 말줄임표를 붙여준다.




:
Posted by 비개인오후

원래는 파일 다운시 외부링크차단용인데 대충 가져다 쓴다.

$download_ok = '';
$Goes = $_SERVER["HTTP_REFERER"];
if($Goes){
$basewords = "http://cyber74.textcube.com";//검사할 문자열
if(substr($Goes, 0, strlen($basewords)) == $basewords){
 $download_ok = "OK";
  }else { echo '짜증나서 막았습니다.'; exit; }   //그냥 나간다.
}else{ echo '짜증나서 막았습니다.'; exit; }





:
Posted by 비개인오후

$my_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
if (eregi('msie', $my_agent)){
//할거없다.
}else{ //익스이외에는 레이어로 씌워버린다.
echo '<div style="z-index:1; position:absolute; width:100%; height:100%; left:0px; top:0px;"><img src=./thum_blank.gif width=100% height=100%></div>';
}

:
Posted by 비개인오후

스타일로 css에서 주면 될걸 가지고 왜 하느냐 하면... 가끔씩 콤보박스 항목에 [분류 3,000] [항목1 20] [항목2 777] 요따구로 써줘야 할때가 있어서다.


//글자수를 맞추기위해 공백처리
function combobox_fixed_string($tmpstr, $fixlength){
 $k = strlen($tmpstr);
 $q = $fixlength - $k;
 if($q > 0){
  $newstr = $tmpstr;
  for($i=0; $i < $q; $i++){ $newstr .= '&nbsp;'; }
 }else{ $newstr = $tmpstr; }
 return $newstr;
}

:
Posted by 비개인오후
2009. 10. 7. 17:29

소수점 표시하기 PHP2009. 10. 7. 17:29

//소수점없이 정수형식으로 표시
function sosu0($val_nt){
 return number_format($val_nt, 0, '.', ',');
}

//소수점 1자리까지표시
function sosu1($val_nt){
 if($val_nt < 0.01){ return 0; }
 $tmp = number_format($val_nt, 1, '.', ',');
 $cnt = strlen($tmp)-1;
 //불여우에서 이상한 문자로 표현되는 오류가 있다. 문자열의 배열에는 있는데 없는걸로 처리해서 오류나므로 꽁수로 처리
 while(($tmp[$cnt]=='0')||($tmp[$cnt]=='.')){  if($tmp[$cnt]=='.'){ $tmp[$cnt]=' '; break; } else { $tmp[$cnt]=' '; $cnt -=1; } }
 return str_replace(' ', '', $tmp);
}

//소수점 2자리까지표시
function sosu2($val_nt){
 if($val_nt < 0.01){ return 0; }
 $tmp = number_format($val_nt, 2, '.', ',');
 $cnt = strlen($tmp)-1;
 //불여우에서 이상한 문자로 표현되는 오류가 있다. 문자열의 배열에는 있는데 없는걸로 처리해서 오류나므로 꽁수로 처리
 while(($tmp[$cnt]=='0')||($tmp[$cnt]=='.')){  if($tmp[$cnt]=='.'){ $tmp[$cnt]=' '; break; } else { $tmp[$cnt]=' '; $cnt -=1; } }
 return str_replace(' ', '', $tmp);
}
//소수점 3자리까지표시
function sosu3($val_nt){
 if($val_nt < 0.001){ return 0; }
 $tmp = number_format($val_nt, 3, '.', ',');
 $cnt = strlen($tmp)-1;
 //불여우에서 이상한 문자로 표현되는 오류가 있다. 문자열의 배열에는 있는데 없는걸로 처리해서 오류나므로 꽁수로 처리
 while(($tmp[$cnt]=='0')||($tmp[$cnt]=='.')){  if($tmp[$cnt]=='.'){ $tmp[$cnt]=' '; break; } else { $tmp[$cnt]=' '; $cnt -=1; } }
 return str_replace(' ', '', $tmp);
}

:
Posted by 비개인오후