깔끔한 에러처리 기법

보통 HTML문서 내에 자바스크립트가 포함되었을때 로직상 에러가 나는 경우가 있습니다.
이유야 여러가지 겠지만 브라우져 버전 때문이나, 사용자의 브라우져 설정 때문에 일어나는
경우가 있습니다. 이때 에러가 나면 브라우져 상태표시줄에 에러표시가 나거나 사용자에
따라 에러 메세지 창이 뜨는데 지금 처리 방법은 상태표시줄아니 에러 메세지 창이 안뜨고
응용에 따라서 다른 방식으로 처리가 되도록 해볼려고 합니다.

이미 아시는 분들도 계시겠지만 모르시는 분들을 위해서 설명하는 것이니 이해하시기 바랍니다.

간단 하지요? 어려운게 없습니다. 스크립트에 문제가 있으면 error_handler를 호출해서 원하는
작업을 실행시키면 되는 겁니다.

에러 발생시 저런식으로 화면에 에러관련 메세지를 표현해도 되고 응용해서 관리자에게 메일발송
및 안내 후 다른 페이지나 이전 페이지로 보낼 수도 있을 것이고, 창을 닫아 버릴수도 있겠지요.

지정 url의 소스를 긁어오는 함수

function getURLPage($URL)
{
global $HTTP_COOKIE;

$pos = strpos($URL, “/”);
$server = trim(substr($URL, 0, $pos));
$path = trim(substr($URL, $pos));
if(!strlen($path)) $path=”/”;

$fp = fsockopen($server, 80, &$errno, &$errstr);
if(!$fp) return ;
$header .= “GET $path HTTP/1.0
“;
$header .= “Host: $server
“;
$header .= “Content-Type: text/html
“;
$header .= “User-Agent: Kwangho Get Robot
“;
$header .= “From: dynamic@netso.co.kr
“;
$header .= “Cookie: $HTTP_COOKIE;

“;
fputs($fp,$header);

$ret = “”;
while(!feof($fp))
{
$ctr=fgets($fp, 1024);
if ($ok) $ret .= $ctr;
if (strstr($ctr, “HTTP/1.1 404”) && !$ok) break;
if (strstr($ctr, “Content-Type: text/html”)) $ok=1;
}
fclose($fp);

return $ret ;

}

태그 상관없이 한글 문자열 자르기

/**************************************************************
* $String : 원본 문자열 *
* $MaxLen : 자를 문자열 길이 *
* $ShortenStr : 말줄임 문자열 *
***************************************************************/

function Shorten_String($String, $MaxLen, $ShortenStr) {

$StringLen = strlen($String); // 원래 문자열의 길이를 구함

for ($i = 0, $count = 0, $tag = 0; $i <= $StringLen && $count < $MaxLen; $i++ ) {
$LastStr = substr($String, $i, 1);
if ($LastStr == ‘<') $tag = 1; // 태그 시작
if ($tag && $LastStr == ‘>’) { $tag = 0; continue; } // 태그 끝
if ($tag) continue;
if ( ord($LastStr) > 127 ) { $count++; $i++; }
$count++;
// 2바이트문자라고 생각되면 $i를 1을 더 증가시켜
// 결국은 2가 증가하게 된다.
// 다음에 오는 1바이트는 당연 지금 바이트의 문자에 귀속되는 문자이다.

}

$RetStr = substr($String, 0, $i);
// 위에서 구한 문자열의 길이만큼으로 자른다.
if ($count<$MaxLen)
return $RetStr;
else
return $RetStr .= $ShortenStr;
// 여기에 말줄임문자를 붙여서 리턴해준다.
}

사업자 등록번호 체크 알고리즘

사업자번호 첫번째는 co_serial_1, 둘째는 co_serial_2, 세번째 자리는 co_serial_3 입니다…
Ex) aaa-bb-ccccc
co_serial_1 = aaa
co_serial_2 = bb
co_serial_3 = ccccc

form 에서 post방식으로 받았을때입니다.^^

중간에 연산하는곳에 substr로 걸러내서 intval로 안정해 줘도 연산이 잘 되네요^^ 에러나는분은 고쳐서 쓰시던지요~~~^^

{
echo(”

“);
exit;
}

$co_serial_1 = $HTTP_POST_VARS[co_serial_1];
$co_serial_2 = $HTTP_POST_VARS[co_serial_2];
$co_serial_3 = $HTTP_POST_VARS[co_serial_3];

if (!isset($co_serial_1) || !isset($co_serial_2) || !isset($co_serial_3))
{
error_msg(“사업자등록번호를 입력해 주세요.”);
}
elseif (ereg(“[^0-9]+”,$co_serial_1) || ereg(“[^0-9]+”,$co_serial_2) || ereg(“[^0-9]+”,$co_serial_3))
{
error_msg(“사업자등록번호를 정확히 입력해 주세요.”);
}
else
{
$co_serial = $co_serial_1.$co_serial_2.$co_serial_3;
$IDtot = 0;
$IDAdd = “137137135”;
for ($i=0;$i < 9 ; $i++)
{
$IDtot = $IDtot + (substr($co_serial,$i,1) * substr($IDAdd,$i,1));
}

$IDtot = $IDtot + ((substr($co_serial,8,1)*5)/10);
$IDtot = 10 – ($IDtot % 10);

if (substr($co_serial_3,-1) != substr($IDtot,-1))
{
error_msg(“사업자등록번호를 정확히 입력해 주세요.”);
}
}
?>