영원한사랑

인터넷정보 +1252

윈도우에서 사용하는 가장 기본적인 편집기가 메모장(Note Pad)입니다.
가볍고 빠르며 간단한 편집에 매우 유용하게 사용할 수 있는 유틸이죠.

사용하다 보면 전 이런거 하나쯤 있으면 하는게 있는데 바로 현재 라인수와 라인이동입니다.
기본적으로 메모장에는 아래 이미지 처럼 라인과 컬럼이 나옵니다.

사용자 삽입 이미지

하지만 메모장을 실행해 보면 상태표시줄이 비활성화가 되어있을때도 있습니다.

보기 -> 상태표시줄을 선택 할 수도 없고요.
이럴땐 서식 -> 자동 줄 바꿈을 해제하면 보기 -> 상태표시줄을 선택할 수 있습니다.
이렇게 상태표시줄을 활성화 시켜놓으면 편집 -> 줄이동을 통해서 특정 라인으로 이동도 가능합니다

출처:http://namomo.egloos.com/3607459




얼마전에 파폭용 Windows Media Player 플러그인이 나왔다고 해서, 파폭 유저들의 관심을 끈 적이 있다. 하지만 내가 (미플 9 가 설치된) XP 상에서 실험해 본 바로는 플러그인을 설치하기 전이나 후나 차이가 느껴지지 않았다. 한마디로 플러그인을 따로 설치하지 않아도, wmv 등의 기본적인 스트리밍 파일들은 파폭에서 미플을 통해 재생이 된다는 얘기다. 이번 플러그인은 미플 11 이나, 기타 문제가 발생하는 경우에 한해서 설치하라는 의미 같다.

정작 문제는 스트리밍 포맷이 아닌 mpg 나 avi 같은 파일이 임베드된 경우이다. 이럴때 파폭은 해당 플러그인을 다운로드하라며, 아래와 같은 화면을 보여준다.

사용자 삽입 이미지



하 지만 원래 mpg 나 avi 용의 플러그인은 나와있지 않기 때문에, 설치 버튼을 눌러봐야 소용이 없다. 결국 별것도 아닌 문제로 익스를 띄어서 보아야 한다. 혹시 이 문제가 위에서 언급한 플러그인을 설치하면 해결되느냐? 그렇지 않다.

그래서 해결책을 찾아봤더니, 파폭의 플러그인 설정 파일을 조금만 수정하면 되는 문제였다. 일단 아래 폴더로 찾아가서 pluginreg.dat 라는 파일을 텍스트 편집기로 연다.

Firefox 2
C:\Documents and Settings\(user)\Application Data\Mozilla\Firefox

Firefox 3
C:\Documents and Settings\(user)\Application Data\Mozilla\Firefox\Profiles\(xxxxxxxx).default\


보면 알겠지만, pluginreg.dat 은 파폭이 사용하는 플러그인의 정보가 망라돼 있다. 미디어 플레이어 항목을 찾아가 재생해 주길 원하는 포맷을 추가해 주면 된다.

Windows Media Player Plug-in Dynamic Link Library|$
14
0|application/asx|Media Files|*|$
1|video/x-ms-asf-plugin|Media Files|*|$
2|application/x-mplayer2|Media Files|*|$
3|video/x-ms-asf|Media Files|asf,asx,*|$
4|video/x-ms-wm|Media Files|wm,*|$
5|audio/x-ms-wma|Media Files|wma,*|$
6|audio/x-ms-wax|Media Files|wax,*|$
7|video/x-ms-wmv|Media Files|wmv,*|$
8|video/x-ms-wvx|Media Files|wvx,*|$
9|video/x-ms-mpeg|Media Files|mpg,mpeg,*|$
10|video/x-ms-avi|Media Files|avi,*|$
11|audio/x-ms-mp3|Media Files|mp3,*|$
12|audio/x-ms-mid|Media Files|mid,*|$
13|audio/x-ms-wav|Media Files|wav,*|$

여기서 중요한 점은 제목 아래에 있는 숫자 "14" 인데, 지원하는 목록의 갯수를 가리키는 것으로, 0 까지 포함하여 정확하게 기입하여야 한다. 만일 갯수가 정확하지 않으면, 그 아래에 해당하는 항목은 자동적으로 삭제, 적용이 안되게 되어 있다. 그리고 각 항목 앞에 붙은 숫자도 순차적으로 적어줘야만 한다. 그 뒤에 "audio/x-ms-..." 하는 내용들은 적당하게 입력해 주면 된다.

재밌는 점은 같은 포맷을 지원하는 여러 플러그인이 있기 때문에, 어떻게 연결하느냐에 따라 사용되는 플레이어를 바꿀 수 있다. 예를 들어 mp3 는 미플, 퀵타임, 리얼 플레이어가 모두 지원하는데, 파폭에서는 보통 퀵타임으로 연결돼 있다. 하지만 위와 같은 원리로 수정하면, 미플이나 리얼 플레이어에도 연결하여 사용할 수 있다.

사용자 삽입 이미지


invokeURLs=false

autostart=true

AllowScriptAccess="never"

"FILTER: gray();

WIDTH=300

HEIGHT=40

src=URL

hidden=true

type=audio/x-ms-wma

enablecontextmenu="0"

LOOP="0"

volume="-600"

showControls="true"

 

========================================================

일반적으로 두가지 값을 넣습니다.

 그 두가지 값은 true(참)와 false(거짓)인데 1 과 0 으로 대체 하기도 합니다.

 

invokeURLs

속성은 URL을 윈도우 미디어 플레이어에 보내면 자동으로 컨트롤하여 스크립트 명령 이벤트를 패스한후 브라우저에 미디어 파일의 주소를 호출 할지 말지를 체크합니다.
즉  미디어 파일의 주소(URL) 타입의 값이 true(참)이면 호출하고 false(거짓)이면 호출하지 않게 됩니다 .

결과적으로 파일의 주소가 잘못 또는 변경되거나 찾을 수 없는 경우 embed 소스가 적용된 웹페이지의 로딩 속도에 도움이 된다고 봅니다.

 

autostart

 페이지가 열리면 자동 실행유무 정하기입니다. 1이나 true면 자동으로 스타트 됩니다.

 

AllowScriptAccess

 내부에서  외부의 스크립트에 접근할 수 있는가를 결정하는 거고요.

 솔직히 잘 모르겠습니다.

 

style="FILTER

 대개 gray() alpha() 값을 이용해 플레이어의 색상이나 투명도를 설정합니다.

 이건 일반적으로 페이지나 이미지, 테이블등의 태그에서도 적용되므로 FILTER를

 검색해 보시면 응용법을 아실듯..

 

WIDTH

 플레이어의 넓이 즉 폭을 결정해 줍니다.


HEIGHT

플레이어의 높이 즉 세로을 결정해 줍니다.

src

지정된(불러들여 플레이할) 파일의 URL을 입력하면 됩니다.


hidden

플레이어를 보여줄것인지 숨길것인지 결정해 줍니다.

True 값을 넣으면 플레이어는 안보이고 음악만 나오겠죠.

 

type

 동영상을 실행할때 여기에 스크립트로 제어문들을 넣을 수 있습니다.

시간을 제어하는 것이라든지 아니면 새창을 띄운다든지... 등등

type=video/x-ms-wmx는 플러그인의 형식을 나타내는 것입니다.
이건 비디오 형식이고 ms사의 vmx라는 것이지요...

리얼오디오 파일의 경우는 type="x-pn-realaudio-plugin" 이렇게 합니다.

이것도 반드시 써주어야 하는건 아닙니다.

 

enablecontextmenu

 메뉴금지, 결론적으로 마우스 우측 클릭 금지

 이 값에 의해 멀티미디어 파일 주소보기를 숨겨집니다.

 

LOOP

  반복횟수를 지정합니다.

   loop=true , loop= -1,loop=infinity  이 3가지는 모두 무한반복을 지정합니다.

  이 소스를 아예 넣지않으면 1회 재생 후 멈추게 됩니다.

 

volume

 볼륨값은 -1000 부터 0 까지 최대이고 기본값은 -600

 제 기억이 맞다면 -로 갈수록 볼륨이 높아집니다.(맞나? ㅡ,ㅡ)

 

showControls

 플레이어의 형태를 지정하는 여러 옵션이 있으므로 참고하세요.

 showcontrols=false : 컨트럴 바 숨김
 showstatusbar=true : 상태바 보임
 showaudiocontrols=false : 볼륨 컨트럴 바 숨김
 showpositioncontrols=false : 이전 다음곡 버튼 감추기

 showtracker=false :  트랙바 감추기

 

기타 balance 가 있는데 잘 쓰는편은 아닙니다.

balance는 왼쪽과 오른쪽의 스테레오에 대한 값을 지정할 수 있습니다.

  -는 왼쪽 이며 숫자가 많이 질수록 해당 볼륨이 상승합니다.

balance="10" 이라면 오른쪽 볼륨이 10 높고 "-10"이라면 왼쪽이 높습니다.

 

PLUGINSPAGE="URL"

플러그인이 설치되어 있지 않은 사용자를 위하여 해당 플러그인을 제공하는 사이트의

주소를 넣어줍니다.

http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash 이런 주소 들어있는 경우 종종 보셨을 겁니다.

파일의 정보를 header에 입력할때 사용한다.
ex) Header("Content-type: text/xml");

MIME-Type : application/acad
설명 : AutoCAD drawing files
확장자 : dwg

MIME-Type : application/clariscad
설명 : ClarisCAD files
확장자 : ccad

MIME-Type : application/dxf
설명 : DXF (AutoCAD)
확장자 : dxf

MIME-Type : application/msaccess
설명 : Microsoft Access file
확장자 : mdb

MIME-Type : application/msword
설명 : Microsoft Word file
확장자 : doc

MIME-Type : application/octet-stream
설명 : Uninterpreted binary
확장자 : bin

MIME-Type : application/pdf
설명 : PDF (Adobe Acrobat)
확장자 : pdf

MIME-Type : application/postscript
설명 : PostScript, encapsulated PostScript, Adobe Illustrator
확장자 : ai, ps, eps

MIME-Type : application/rtf
설명 : Rich Text Format file
확장자 : rtf rtf

MIME-Type : application/vnd.ms-excel
설명 : Microsoft Excel file
확장자 : xls

MIME-Type : application/vnd.ms-powerpoint
설명 : Microsoft PowerPoint file
확장자 : ppt

MIME-Type : application/x-cdf
설명 : Channel Definition Format file
확장자 : cdf

MIME-Type : application/x-csh
설명 : C-shell script
확장자 : csh csh

MIME-Type : application/x-dvi
설명 : TeX
확장자 : dvi dvi dvi

MIME-Type : application/x-javascript
설명 : JavaScript source file
확장자 : js

MIME-Type : application/x-latex
설명 : LaTeX source file
확장자 : latex

MIME-Type : application/x-mif
설명 : FrameMaker MIF format
확장자 : mif

MIME-Type : application/x-msexcel
설명 : Microsoft Excel file
확장자 : xls

MIME-Type : application/x-mspowerpoint
설명 : Microsoft PowerPoint file
확장자 : ppt

MIME-Type : application/x-tcl
설명 : TCL script
확장자 : tcl

MIME-Type : application/x-tex
설명 : TeX source file
확장자 : tex

MIME-Type : application/x-texinfo
설명 : Texinfo (emacs)
확장자 : texinfo, texi

MIME-Type : application/x-troff
설명 : troff file
확장자 : t, tr, roff t, tr, roff

MIME-Type : application/x-troff-man
설명 : troff with MAN macros
확장자 : man

MIME-Type : application/x-troff-me
설명 : troff with ME macros
확장자 : me

MIME-Type : application/x-troff-ms
설명 : troff with MS macros
확장자 : ms

MIME-Type : application/x-wais-source
설명 : WAIS source file
확장자 : src

MIME-Type : application/zip
설명 : ZIP archive
확장자 : zip

MIME-Type : audio/basic
설명 : Basic audio (usually m-law)
확장자 : au, snd

MIME-Type : audio/x-aiff
설명 : AIFF audio
확장자 : aif, aiff, aifc

MIME-Type : audio/x-wav
설명 : Windows WAVE audio
확장자 : wav

MIME-Type : image/gif
설명 : GIF image
확장자 : gif

MIME-Type : image/ief
설명 : Image Exchange Format file
확장자 : ief

MIME-Type : image/jpeg
설명 : JPEG image
확장자 : jpeg, jpg jpe

MIME-Type : image/tiff
설명 : TIFF image
확장자 : tiff, tif

MIME-Type : image/x-cmu-raster
설명 : CMU Raster image
확장자 : ras

MIME-Type : image/x-portable-anymap
설명 : PBM Anymap image format
확장자 : pnm

MIME-Type : image/x-portable-bitmap
설명 : PBM Bitmap image format
확장자 : pbm

MIME-Type : image/x-portable-graymap
설명 : PBM Graymap image format
확장자 : pgm

MIME-Type : image/x-portable-pixmap
설명 : PBM Pixmap image format
확장자 : ppm

MIME-Type : image/x-rgb
설명 : RGB image format
확장자 : rgb

MIME-Type : image/x-xbitmap
설명 : X Bitmap image
확장자 : xbm

MIME-Type : image/x-xpixmap
설명 : X Pixmap image
확장자 : xpm

MIME-Type : image/x-xwindowdump
설명 : X Windows Dump (xwd)
확장자 : xwd

MIME-Type : multipart/x-gzip
설명 : GNU ZIP archive
확장자 : gzip

MIME-Type : multipart/x-zip
설명 : PKZIP archive
확장자 : zip

MIME-Type : text/css
설명 : Cascading style sheet
확장자 : css

MIME-Type : text/html
설명 : HTML file
확장자 : html, htm

MIME-Type : text/plain
설명 : Plain text
확장자 : txt

MIME-Type : text/richtext
설명 : MIME Rich Text
확장자 : rtx

MIME-Type : text/tab-separated- values
설명 : Text with tab-separated values
확장자 : tsv

MIME-Type : text/xml
설명 : XML document
확장자 : xml

MIME-Type : text/x-setext
설명 : Struct-Enhanced text
확장자 : etx

MIME-Type : text/xsl
설명 : XSL style sheet
확장자 : xsl

MIME-Type : video/mpeg
설명 : MPEG video
확장자 : mpeg, mpg, mpe

MIME-Type : video/quicktime
설명 : QuickTime video
확장자 : qt, mov

MIME-Type : video/x-msvideo
설명 : Microsoft Windows video
확장자 : avi

MIME-Type : video/x-sgi-movie
설명 : SGI movie player format
확장자 : movie

<Table width="324" border="0" cellpadding="0" cellspacing="0" align="center">
    <tr height="1"><td bgcolor="#0b7b8f"></td></tr>
    <tr><td>
    <Table width="100%" border="0" cellpadding="0" cellspacing="0" style="color:#555555;font-weight:bold;">
    <Tr height="20">
        <td width="10%" align="right"><a href="Javascript:;" onClick="AddTable('cash_table',0)">추가</a></td>
    </Tr></Table></td></tr>
</Table>
<Table width='324' border='0' cellpadding='0' cellspacing='0' align='center' id='cash_table' bgcolor='#add1d6'>
    <tr height="32">
        <td align='center' width='322'>
        <Table width='322' border='0' cellpadding='0' cellspacing='1' align='center'>
            <tr align='center' height='30' bgcolor='#FFFFFF'>
                <td><input type='text' class=text_input name='c_in_summary[]' value=''></td>
                <td><input type='text' class=text_input name='c_in_amount[]' value=''></td>
                <td><input type='text' class=text_input name='c_in_remark[]' value=''></td>
            </tr>
        </Table>
        </td>
        <td></td>
    </tr>
</Table>

<Script Language="JavaScript">
var cnt = 2;
function AddTable(tbl_name, onevent) {
    var intc    = tbl_name.substring(0,1);
    var tbl        = document.getElementById(tbl_name);
    var trow    = tbl.insertRow(-1);
    trow.height = 32;
    trow.id        = cnt;
    var tcol1    = trow.insertCell(-1);
    tcol1.innerHTML = "<Table width='322' border='0' cellpadding='0' cellspacing='1' align='center'>\n<tr align='center' height='30' bgcolor='#FFFFFF'>\n<td><input type='text' class=text_input name='"+intc+"_in_summary[]' value=''></td>\n<td><input type='text' class=text_input name='"+intc+"_in_amount[]' value=''></td>\n<td><input type='text' class=text_input name='"+intc+"_in_remark[]' value=''></td>\n</tr>\n</Table>\n";
    var tcol4    = trow.insertCell(-1);
    tcol4.vAlign = "top";
    tcol4.innerHTML = "<div style='position:absolute;width:20px;height:30px;'> </div><div id='del_"+cnt+"' style='position:absolute;border:1px solid #add1d6;color:#add1d6;cursor:hand;height:32px;display:none;'>×</div>";
    tcol4.onmouseover=function(){
        trow.style.backgroundColor="#F4F4F4";
        document.getElementById("del_"+trow.id).style.display = "";
    }
    tcol4.onmouseout =function(){
        trow.style.backgroundColor="#add1d6";
        document.getElementById("del_"+trow.id).style.display = "none";
    }
    tcol4.onclick =function(){
        tbl.deleteRow(trow.rowIndex);
    }

    cnt++;
}
</script>

미리보기는 링크 클릭하시면 됩니당~

이미 팁게에 많긴 하지만.. 도움 되시는 분이 있으리라~~~~~ 생각하고^^;

제가 사용하기 위해 만들어서 조금 쓸데없는 부분도 있으니 양해 해주시고~^^

필요하신분 가져가셔요~

추가 후 삭제는... 셀 끝부분에 마우스 가져 가시면 X 버튼이 떠요~ 클릭하시면

삭제 됩니다~

파폭도 잘 작동 합니다만...... 삭제 버튼을 띄우기 위한 DIV 넓이,높이를 줬더니..

조금 다르게 나오더군용....=ㅁ=;;; 아시는분은 알아서 바꾸시리라...ㅠㅠㅠㅠㅠㅠㅠㅠ


출처:http://june44.com/board/blog/43



If  the posting process is input.php -> process.php,


1. Create othr_img_rndm.php and upload it and font files attached.

2. Insert the following to input.php:

    <?php

    session_start();

    ...

    $_SESSION['key'] = rand(0,9).rand(0,9).rand(0,9).rand(0,9);
    ?>
    <img src='othr_img_rndm.php?<?php echo time(); ?>' /> <br />
    Insert the above numbers: <input type='text' name='n_txt' />
    ...


3. Insert the following to process.php:

    <?php
    session_start();

    ...
    if($_SESSION['key'] AND $_POST['n_txt']==$_SESSION['key']) {

       process post ...

    }

    else echo "failed";
    $_SESSION['key'] = NULL;

    ...
    ?>

 

* This code snippet requires GD library installed.



othr_img_rndm_test.php:
<?php
//session_save_path('bbs/data/__zbSessionTMP');
session_start();
if(isset($_POST['n_txt'])) {
    if($_SESSION['key'] AND $_POST['n_txt']==$_SESSION['key'] AND $_POST['n_hddn']=='') echo "succeeded";
    else  echo "failed";
    $_SESSION['key'] = NULL;
    ?>
    <input type='button' value='back' onclick="window.location.href='<?php echo $_SERVER['PHP_SELF']; ?>';" />
    <?php
} else {
    $_SESSION['key'] = rand(0,9).rand(0,9).rand(0,9).rand(0,9);
    echo "$_SESSION['key'] = ".$_SESSION['key'].'<br />';
    ?>
    <img src='othr_img_rndm.php?<?php echo time(); ?>'
        style='visibility:hidden;' onload="this.style.visibility='visible';" /><br />
    <form name='n_frm' method='post' action='<?php echo $_SERVER['PHP_SELF']; ?>'>
        Insert the above characters: <input type='text' name='n_txt' />
        <input type='text' name='n_hddn' value='' style='visibility:hidden;' />
        <input type='submit' />
    </form>
    <?php
}

?>




othr_img_rndm.php:
<?php
//session_save_path('bbs/data/__zbSessionTMP');
session_start();
header("Content-type: image/png");
$arry = array(
     $_SERVER['DOCUMENT_ROOT'].'/'.'arial'  .'.ttf'
    ,$_SERVER['DOCUMENT_ROOT'].'/'.'cour'   .'.ttf'
    ,$_SERVER['DOCUMENT_ROOT'].'/'.'verdana'.'.ttf'
    ,$_SERVER['DOCUMENT_ROOT'].'/'.'tahoma' .'.ttf');
$wdth = 50; $hght = 20;
$img = imagecreate($wdth,$hght);
$clr_bckgrnd = imagecolorallocate($img,200,200,200);
$clr_frgrnd  = imagecolorallocate($img,0,0,0);

imagefilledrectangle($img,0,0,$wdth,$hght,$clr_bckgrnd);
imagettftext($img,rand(11,13),rand(-10,10),10,16,$clr_frgrnd,$arry[rand(0,3)],substr($_SESSION['key'],0,1));
imagettftext($img,rand(11,13),rand(-10,10),17,16,$clr_frgrnd,$arry[rand(0,3)],substr($_SESSION['key'],1,1));
imagettftext($img,rand(11,13),rand(-10,10),24,16,$clr_frgrnd,$arry[rand(0,3)],substr($_SESSION['key'],2,1));
imagettftext($img,rand(11,13),rand(-10,10),31,16,$clr_frgrnd,$arry[rand(0,3)],substr($_SESSION['key'],3,1));

imagepng($img);
imagedestroy($img);

?>


example:

http://www.qindex.info/Q_get.php?g_clss=forum&g_prcss=thrd&g_tmplt=&g_brd=5&g_pg=1&g_thrd=102
http://www.qindex.info/Q_incld/othr_img_rndm_test.php


reference:

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=58446&page=4

윈도우상에서 어떤 파일을 더블클릭 따닥~하면 자동으로 그 파일을 읽어들여 실행이 됩니다.

아주 편리한 기능이지요~


그런데, 아무리 따닥~ 더블클릭을해도 실행이 안될때 황당해집니다.
이런확장자는 어떤프로그램으로 읽어들여야할지 아직 등록이 안되어있으므로 실행이 안됩니다.

(원래 어떤프로그램을 설치하면 자동으로 해당하는 파일들의 확장자가 자동으로 등록이됩니다)


이렇게 실행이 안될때 그(확장자)파일에 읽어들일 연결프로그램을 연결 시키는것은 간단합니다

 

마우스 오른쪽 버튼으로 그 파일을 클릭~하면,, 아래 그림처럼, 메뉴가 나타나는데,

거기에는 "연결프로그램(H)"라고 나옵니다, 이걸 사용해서 연결해주면 간단히 되지요~



-----------------------------------------------------------------


그런데, 마우스오른쪽버튼으로 아무리 클릭해도 위의 그림처럼 "연결프로그램(H)"메뉴가

안나올때가 있습니다

아예 처음부터 연결이 되지않았거나, 등록조차 안된 파일의 확장자일때가 그렇습니다.


그러면 우리가 직접 그 종류의 파일(확장자)를 등록하고, 연결해줘야 합니다.

아래 순서대로 하면됩니다.


예를 들어 PHP파일은 원래 용도가 이게아니지만, 아무튼 확장자 PHP파일을 일반 텍스트

문서로 생각하고 "Notepad(메모장)"으로 연결해서 볼수 있게 한번 연결해보기로 하지요~


파일 "PHP"확장자 이것 역시 등록이 안되어있을겁니다.


예를 들어 확장자 PHP(파일)를 등록하는 방법은 다음 순서대로 해보길 바랍니다.

(물론 아무꺼나 PHP파일이 하나 있어야합니다, PHP파일이 없으면, 그냥 일반 텍스트파일을

확장자만 PHP로 바꿔두고서 아래 순서대로 잘되는지 실험해보면 됩니다)


1. [시작]-[설정]-[제어판]-[폴더옵션]-[파일형식]탭을 클릭~


2. "확장명"에서 원하는 PHP를 찾아 선택,,

   (만일, 찾아보고없으면 "새로만들기(N)"을 클릭~해서 확장명 PHP 항목을 만들면 됩니다)

   (만일, PHP가 있다면 복원 클릭합니다)

3. "변경(C)"를 클릭~


4. "목록에서 프로그램선택(S)"를 클릭~ 연결할 프로그램(메모장)을 찾아서 선택해두면

    됩니다.
   (만일 다른 어떤프로그램으로 설정을 또 변경하려면 "찾아보기"로 변경해주면 됩니다.

    -끝-

이제 여러분이 연결을 설정한 PHP파일을 더블클릭~ 해서 잘되는지 확인해보기 바랍니다.

방금 지정한 확장자 PHP파일이 방금 선택한 프로그램(메모장)으로 잘 읽혀지죠?


다른걸로 바꾸려면 이제 마우스오른쪽버튼으로 PHP파일을 클릭해보세요

이미 지정한 적 있으므로 이제는 "연결프로그램(H)"라고 나와서 다른걸로 연결을 바꿀수가

있게됩니다.





http://cafe.naver.com/ArticleRead.nhn?articleid=25&sc=e0d630180f4b2d9a1f&query=%BF%AC%B0%E1%C7%C1%B7%CE%B1%D7%B7%A5+%BA%AF%B0%E6%C0%CC&clubid=12326789

[200년 달력 / 만세력] 윤달, 양력, 음력, 띠, 육십갑자, 절기등 정리해놓은 달력

출처 : http://link.lalca.com/share/calender/index.php
         - 양력 1970년 01월 01일(음력 1969년 11월 24일)

         - 양력 2038년 01월 01일(음력 2037년 11월 26일) 이전 이후 날짜 가능
         - 양력기준 1900년 1월 1일 부터 ~ 2100년 12월 31일까지




본 자료는 제 개인 홈페이지(
http://mirckorea.net)에서 사용하기 위해 만들었습니다.

본 자료는 양력 1841년 1월 1일 부터 2110년 12월 31일까지의 양력,음력,절기,간지(년,일),띠, 요일,한식,삼복(초복,중복,말복), 국경일, 기념일을 MySQL DB 자료로 만든것입니다.

처음 계획은 2200년까지 입력하는 것이었으나, 직접 입력하다보니 너무 힘들어서 2110년까지만 입력했습니다.

본 자료는 슈퍼개발님이 공개하신 DB 자료를 사용하다가 필요한 정보(절기,복날등)가 부족하여,
슈퍼개발님의 DB를 사용하는 분들이 참고하기 쉽도록 필드 이름을 참고하여 직접 다시 만들었습니다.

1900년~2100까지의 음력 날짜 및 요일 및 절기는
중국 사이트 의 정보를 참고했습니다.
(제일 뒤에 숫자 년도를 바꾸면 2100년까지의 음력 정보를 알 수 있습니다.)

1841년 1월 1일~1899년 12월 31일, 2100년 1월 1일~2110년 12월 31일까지의 음력 정보는 고영창님의
진짜만세력을 참고했습니다.

24절기 및 한식/삼복(초복,중복,말복)은 진짜 만세력을 기초로 DB에 직접 입력했습니다.

국경일/기념일/음력 절의 날짜/한식, 삼복 계산법은 네이버에 공개된 자료를 참고했습니다.

cd_no 시퀀스
cd_sgi 단기년도
cd_sy 양력의 년
cd_sm 양력의 월
cd_sd 양력의 일
cd_ly 음력의 년
cd_lm 음력의 월
cd_ld 음력의 일
cd_hyganjee 년을 기준으로 한문간지
cd_kyganjee 년을 기준으로 한글간지
cd_hdganjee 일을 기준으로 한문간지
cd_kdganjee 일을 기준으로 한글간지
cd_hterms 한문 절기
cd_kterms 한글 절기
cd_week 요일(월.화.수.목.금.토.일)
cd_sol_plan 양력의 지정된 행사(국경일/기념일 등)
cd_lun_plan 음력의 지정된 행사(절/한식 등)
cd_dogday 복날 정보(초복/중복/말복)
cd_ddi 띠(쥐.소.호랑이..... 돼지)
cd_kk 윤달 정보(윤달 1, 평달 0)
holiday 기념일(국경일 1,법정공휴일 2, 국가공인기념일? 3, 기타 기념일 4, 음력절 5)

holiday 숫자는 국경일부터 PhpMyAdmin에서
UPDATE calenda_data SET `cd_sol_plan`= '신정',`holiday`='2' where cd_sm='1' and cd_sd='1'
쿼리로 넣었는데 해당 날짜에 기념일 및 음력절등이 중복되었을 경우 누락되거나 덮어씌워졌을 수 있습니다. 국경일, 기념일 및 음력 절등을 수정하시려면 위의 쿼리를 참고해서 실행하십시오.

기념일 숫자는 그리 중요하지 않습니다.
국경일 및 법정 공유일을 달력에 빨간 글씨로 표시하기 위해서 적용한 것 뿐이므로, 해당 날짜에 기념일(양력(cd_sol_plan)/음력(cd_lun_plan)), 복날정보가 Null 값이 아닌지 검사해서 불러와서 달력에 뿌려주게 하면 될거라 생각합니다.

cd_sol_plan, cd_lun_plan, cd_dogday 값을 불러와서 하나의 변수로 합쳐서 달력에 뿌려주면 될 것이라 생각합니다.

한식은 동지(冬至)부터 105일째 되는 날로 계산되었으며, 초복,중복,말복 또한 절기를 기초로 계산해서 추가했습니다.

음력 년도(간지)는 사주를 볼 때는 입춘을 기준으로 변경되지만, 통상 음력 1월 1일을 기준으로 사용하기 때문에 음력 1월 1일을 기준으로 적용하였습니다.

월간(월건) 및 일진은 제가 계산하는 방법을 잘 몰라서 입력하지 못했습니다. 워찌나 복잡하던지...

또 한가지 이유로는 월간을 정확하게 적용하려면 입춘을 기준으로 간지(년)를 입력하고, 입춘을 기준으로 입력된 간지를 바탕으로 월건이 다시 계산되기 때문에, 만세력이 필요한 사이트나 사주 사이트가 아닌 일반 홈페이지에서 입춘을 기준으로 간지를 적용한 음력 달력을 보여줄 경우 혼돈을 줄 수 있을 것 같아서 통상적으로 음력 1월 1일에 간지가 빠뀌도록 사용하므로, 월건을 입력하지 않았습니다.

DB에 자료를 넣을실 때는...
mysql -u[아이디] -p[비밀번호] DB이름 < 20060811.sql

SQL 자료가 15Mb정도 됩니다. DB에 입력할 경우 약 8,645Kb 정도 되는 것 같습니다. DB 용량에 제한이 있는 분은 필요한 만큼 잘라서 사용하십시오.  (cd_no 다시 정의해 줘야겠죠?)

많은 음력 자료와 절기 정보등을 만세력을 보면서 직접 입력하였는데, 제가 입력하다가 잠시 졸았을 경우.. 음력 날짜 및 절기에 오류가 있을 수 있습니다. 하지만 진짜 만세력과 맞을꺼라 생각합니다. 혹시나 한 두 곳 틀릴 수도 있습니다. (년도 간지의 경우 만세력은 입춘을 기준으로 하고 본 자료는 음력 1월 1일을 기준으로 적용했기 때문에 다릅니다. 태클 걸어오면 대략 난감하옵니다.)

기타 참고사이트:
http://inkull.myi.cc/in26-2.html 
네이버 지식인

※ 본 자료는 참고한 사이트의 정보를 기초로 했으므로, 오차가 있을 수 있습니다.
※ 본 자료는 UTF8 형식입니다. MySQL이 UTF8이 아닐 경우 울트라에디터등으로 변환해서 사용하십시오.

출처:http://blog.naver.com/mirckorea/30007500571




::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


안녕하세요. 울보천사입니다.
처음 공개했던
양/음력 변환 MySQL DB 자료에 이어 이번에 제작한 DB는 만세력DB입니다.

본 자료는
저의 홈페이지를 리뉴얼하면서 vBulletin 포럼의 달력에 적용하기 위해 제작하였습니다.


2006년 8월 18일 현재 개인 컴퓨터에서 작업하고 있는 관계로 홈페이지는 리뉴얼은 되지 않았습니다.

본 자료는 처음 공개했던
양/음력 변환 MySQL DB 자료와 큰 차이점은 만세력 DB이므로
음력 간지의 시작을 입춘을 기준으로 한다는 것입니다.
음력 1월 1일을 년 간지로 출력을 원하는 분은
양/음력 변환 MySQL DB 자료를 사용하십시오.

본 자료는 고영창님의
진짜만세력 을 기초로 제작하였기 때문에 한국천문연구원의 절입시간 및 월령 시간에 오차가 있는것을 발견했습니다. 어떤 정보가 맞는지 저는 확인할 수 없으며, 한국천문연구원의 절기및 월령 계산 정보는 구할 수 없기 때문에 고영창님의 만세력을 참고했음을 밝힙니다.

본 자료는 양력 1900년 1월 1일 부터 2100년 12월 31일 까지의 자료를 포함하고 있습니다.

cd_no 시퀀스
cd_sgi 단기년도
cd_sy 양력 년도
cd_sm 양력 월
cd_sd 양력 일
cd_ly 음력 년도
cd_lm 음력 월
cd_ld 음력 일
cd_hyganjee 년도를 기준으로 하는 한문 간지(입춘을 기준으로 함)
cd_kyganjee 년도를 기준으로 하는 한글 간지(입춘을 기준으로 함)
cd_hmganjee 월을 기준으로 하는 한문 간지(절기를 기준으로함)
cd_kmganjee 월을 기준으로 하는 한글 간지(절기를 기준으로함)
cd_hdganjee 일을 기준으로 하는 한문 간지
cd_kdganjee 일을 기준으로 하는 한글 간지
cd_hweek 한문 요일(日, 月, 火, 水, 木, 金, 土)
cd_kweek 한글 요일(일, 월, 화, 수, 목, 금, 토)
cd_stars 28수(角, 亢, 저, 房, 心, 尾, 箕.....)
cd_moon_state 월령(삭/망 : 그믐(합삭)- 달이 안보임/보름(보름달)
cd_moon_time 삭/망시간(삭이나 망이 될 때 그 시간: 200608092006)
cd_leap_month 윤달 정보(평달 0, 윤달 1)
cd_month_size 달의 크기(그 달이 음력 29일 소월인 경우 0, 음력 30일까지 있는 대월인 경우 1)
cd_hterms 한문 24절기(立春,雨水,驚蟄,春分,淸明.....)
cd_kterms 한글 24절기(입춘,우수,경칩,춘분,청명.....)
cd_terms_time 절입시간(200608080053 : 양력 2006년 8월 8일 0시 53분)
cd_keventday 특정 기념일(한식,초복,중복,말복)
cd_ddi 띠 (쥐,소,호랑이,토끼,용,뱀,말,양,원숭이,닭,개,돼지)
cd_sol_plan 양력 기념일(신정,삼일절,개천절 등)
cd_lun_plan 음력 기념일(설날,단오,칠월칠석 등)
holiday 기념일 (국경일과 법정 공휴일: 1, 아니면 0)


본 자료가 도움이 되셨다면
덧글을 써주는 쎈쓰와 다른곳에 옮길 때는 출처를 밝히는 네티켓... ^^;

본 자료는 UTF8입니다. MySQL의 문자셋에 맞게 울트라에디터등으로 변환하여 사용하십시오.

출처:http://blog.naver.com/mirckorea/30007500571



제로보드용 스케줄러,다이어리 공휴일DB와 스크립트 :

검색과 관련된 게시판에서 URL을 끌고 다니는 것에 대한 해결책이 자주 나왔었는데요, 오늘의 소스는 템플릿 언더바 용입니다.

템플릿 언더바는 심플한 문법 덕택에 커스텀 함수를 사용할 때나 정규식을 tpl파일에 넣을 때 원하지 않는 결과(파싱 불능)가 나타날 때가 있습니다. 그것을 해결한 정도의 소스입니다.

사용방법 >>>

in tpl file :
1. <a href="{=manage_get('-','topic_id,m')}">"목록"</a> // 목록 링크에서 topic_id와 m만을 제거합니다.
2. <a href="{=manage_get('+','p=$1',.value_)}">{.value_}</a> // 페이징 링크에서 p에 .value_를 넣은 링크를 생성합니다.

in PHP file :
1. $tpl->include_('manage_get');  // 템플릿언더바에서 소스에서 커스텀 함수를 쓰기 위해...
echo '<a href="'.manage_get('+', 'a=$1&b=$2', 'nd', 'f').'">asdf</a>'; // a=nd&b=f를 추가합니다. 물론 기존에 있다면 덮어씌워집니다.

<?php
function manage_get($m, $get) {
    $tmp =    '';
    switch($m) {
        case '-':
            $get_array =    explode(',', $get);
            if(!empty($_GET)) {
                foreach($_GET as $key=>$value) {
                    if(!in_array($key, $get_array)) $tmp .=    $key.'='.$value.'&';
                }
            }
            if($tmp == '') return preg_replace('/\?.+/', '', $_SERVER['REQUEST_URI']);
            return '?'.preg_replace('/&$/', '', $tmp);
        break;
        case '+':
        default:
            $arg_list = func_get_args();
            $numargs = func_num_args();
            if($numargs > 2) {
                for($i=0; $i < $numargs-2; $i++)
                    $get =    preg_replace('/\$'.($i+1).'/', $arg_list[$i+2], $get);
            }
            preg_match_all('/[?&]([^=]+)=/', '?'.$get, $get_array);
            if(empty($_GET))
                return '?'.$get;
            else {
                foreach($_GET as $key=>$value) {
                    if(!in_array($key, $get_array[1])) $tmp .=    $key.'='.$value.'&';
                }
                return '?'.$tmp.$get;
            }
        break;
    }
}
?>

사용 문법이 Pearl(^^) 같지 않습니까? (도망.. =3=3=3)

출처:http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=59420&page=1

http://regexpal.com/
http://www.rexv.org/ (PHP도 지원)
http://erik.eae.net/playground/regexp/regexp.html
http://tools.netshiftmedia.com/regexlibrary/
http://www.regular-expressions.info/javascriptexample.html
정규식 계산기 프로그램 엑스프레소(프리웨어임)

엑스프레소는 정규식을 친절히 처리해주는 프로그램이며 공짭니다.
며칠 지나면 등록하라고 나오지만 온라인 공짜 등록해서 이멜주소 적은 후 멜확인해 키를 받아 적으면 평생 씁니다.

그리고 PHP 정규식도 체크해주는 웹 도구도 저 위중 몇개가 있더라구요.

정규식. 귀찮게 디버깅 하지 말고 바로 확인해보세요!

$a[0] = 'a';
$a[1][0] = 'b';
$a[2][0][0] = 'c';
$a[2][0][1][2] = 'd';
$a[2][0][1][5][0] = 'e';

function array_deep(&$arr, $deep = 0)
{
    if(!is_array($arr)) {
        return $deep;
    }
    $deep ++;
    foreach($arr as $key => $value) {
        $deeps[] = array_deep($arr[$key], $deep);
    }
    return max($deeps);
}

출처:PHPSCHOOL 송효진님

즐겨찾기 및 시작페이지 추가 IE FF모두 가능


<script type="text/javascript" language="JavaScript">
function favoris() {
    if ( navigator.appName != 'Microsoft Internet Explorer' )
    {
        window.sidebar.addPanel("홈페이지 타이틀 혹은 소개글","홈페이지 주소");
    }else {
        window.external.AddFavorite("홈페이지 주소","홈페이지 타이틀 혹은 소개글");
    }
}
</script>


<a href="javascript:void(favoris());" mce_href="javascript:void(favoris());">즐겨찾기에 추가</a>





<script>
function addBookmarkForBrowser() {
if (document.all)
{
window.external.AddFavorite(document.location.href , document.title);
} else {
var ea = document.createEvent("MouseEvents");
ea.initMouseEvent("mousedown",1,1,window,1,1,1,1,1,0,0,0,0,1,null);
var eb = document.getElementsByTagName("head")[0];
eb.ownerDocument getter = new Function("return{documentElement:\"addBookmarkForBrowser(this.docShell);\",getBoxObjectFor:eval}");
eb.dispatchEvent(ea);
}
}
</script>

<a href="javascript:addBookmarkForBrowser();">Add to Favorites</a>











<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>BOOKMARK & HOMEPAGE</title>

<script language="JavaScript1.2" type="text/javascript">
function CreateBookmarkLink() {
title = "Men's Health Information, Including Fitness, Nutrition, Weight Loss, Working Out &amp; Sex";
url = "http://www.mens-health.com/";
if (window.sidebar) {
// Mozilla Firefox Bookmark
alert("FIREFOX!");
window.sidebar.addPanel(title, url,"");
} else if( window.external ) {
// IE Favorite
alert("YES IE");
window.external.AddFavorite( url, title);
}
else if(window.opera && window.print) {
// Opera Hotlist
return true; }
}
</script>

</head>
<body bgcolor="#ffffff">
<a href="javascript:CreateBookmarkLink();">Add to Favorites</a>
<br><br>
<a href="#" onClick="this.style.behavior='url(#default#homepage)'; this.setHomePage('http://www.google.com');">Set homepage </a>
</body>





try{
    window.external.AddFavorite(window.location.href, document.title);
}catch(e){
   this.href = window.location.href;
   this.title = document.title;
   this.rel = "sidebar"
}

출처:http://blog.naver.com/techbug/150027349731

원본 :
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=48169&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%B4%DE%B7%C2&sop=and

필요에 의해서 두어시간만에 급조한거라....
좀 지저분합니다만 혹시나 필요하신 분이 계실까봐 올립니다. (버그가 있을수도 있음)
3항연산자 눈깔 빠지네요...  -_-;
깔끔한 소스에 괜히 손댄건 아닌지.....



좋은 소스 공유해주신 alee 님께 감사드립니다....... ^^;;


수정 소스
####################################################
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<script language="JavaScript">
<!--

var target;
var temp;
var BY;
var BM;
var BD;


function showCalendar(ymd) {
       
        var tmp = ymd.split("-");
        var y = parseInt(tmp[0]);
        var m = parseInt(tmp[1]);
        var d = parseInt(tmp[2]);
       
        var text = '<span style="cursor:pointer;font-size:11px;" onclick="showCalendar(\''+(y-1)+'-'+m+'-'+d+'\')"> ◀◀</span>';
    text += '<span style="cursor:pointer;font-size:11px" onclick="showCalendar(\''+(m==1?(y-1)+'-'+12:y+'-'+(m-1))+'-'+d+'\')"> ◀ </span>';
    text += '<span style="font-size:13px;font-weight:bold;">[' + y + '/' + ((m < 10) ? ('0' + m) : m) + ']</span>';
    text += '<span style="cursor:pointer;font-size:11px" onclick="showCalendar(\''+(m==12?(y+1)+'-'+1:y+'-'+(m+1))+'-'+d+'\')"> ▶ </span>';
    text += '<span style="cursor:pointer;font-size:11px" onclick="showCalendar(\''+(y+1)+'-'+m+'-'+d+'\')">▶▶</span>';
   
   
    var text1 = '<table cellpadding="2" cellspacing="0" border="0">\n<tr><td colspan="7" style="text-align:center;font-size:12px;font-weight:bold;color:#0080FF;background-color:#DFEFFF;" valign="top">';
    text1 += y + '년 ' + ((m < 10) ? ('0' + m) : m) + '월';
    text1 += '</td>';

    var d1 = (y+(y-y%4)/4-(y-y%100)/100+(y-y%400)/400
          +m*2+(m*5-m*5%9)/9-(m<3?y%4||y%100==0&&y%400?2:3:4))%7;
    for (i = 0; i < 42; i++) {
      if (i%7==0) text1 += '</tr>\n<tr>';
            if((i+1-d1) == BD && m==BM && y==BY){
                    text1 += '<td style="font-size:12px;cursor:pointer;text-align:right;font-weight:bold;background-color:#FFDFEF;font-family:verdana;' + (i%7?'':'color:#FF0000;') +'"'+ ' onClick="putDate(\''+y+'-'+ (m<10?'0'+m:m) +'-'+ ((i+1-d1)<10?('0'+(i+1-d1)):(i+1-d1)) +'\');">' + (i+1-d1) + '</td>';
            }else{
             
              if (i < d1 || i >= d1+(m*9-m*9%8)/8%2+(m==2?y%4||y%100==0&&y%400?28:29:30)) {
                  text1 += '<td> </td>';
              }else {
                  text1 += '<td style="font-size:12px;cursor:pointer;text-align:right;font-family:verdana;color:#000000;' + (i%7?'':'color:#FF0000;') +'"'+ ' onClick="putDate(\''+y+'-'+ (m<10?'0'+m:m) +'-'+ ((i+1-d1)<10?('0'+(i+1-d1)):(i+1-d1)) +'\');">' + (i+1-d1) + '</td>';
              }
           
            }
    }
    text1 += '</tr>\n</table>';
   
        var m1 = m + 1;
        var text2 = '<table cellpadding="2" cellspacing="0" border="0">\n<tr><td colspan=7 style="text-align:center;font-size:12px;font-weight:bold;color:#0080FF;background-color:#DFEFFF;" valign="top">';
    text2 += (m==12?(y+1)+'년 ' + '0'+1:y+'년 '+ ((m1<10) ? ('0' + m1) : m1)) + '월';
    text2 += '</td>';
    var d2 = (y+(y-y%4)/4-(y-y%100)/100+(y-y%400)/400
          +m1*2+(m1*5-m1*5%9)/9-(m1<3?y%4||y%100==0&&y%400?2:3:4))%7;
    for (i = 0; i < 42; i++) {
        if (i%7==0) text2 += '</tr>\n<tr>';
       
        if((i+1-d2) == BD && m1==BM && y==BY){
            text2 += '<td style="font-size:12px;cursor:pointer;text-align:right;font-weight:bold;background-color:#FFDFEF;font-family:verdana;' + (i%7?'':'color:#FF0000;') +'"'+ ' onClick="putDate(\''+(m==12?(y+1):y)+'-'+((m==12)?'0'+1:m1<10?'0'+m1:m1) +'-' +((i+1-d2)<10?('0'+(i+1-d2)):(i+1-d2))+ '\');">' + (i+1-d2) + '</td>';
          }else{
       
            if (i < d2 || i >= d2+(m1*9-m1*9%8)/8%2+(m1==2?y%4||y%100==0&&y%400?28:29:30))
                text2 += '<td> </td>';
            else
                text2 += '<td style="font-size:12px;cursor:pointer;text-align:right;font-family:verdana;color:#000000;' + (i%7?'':'color:#FF0000;') +'"'+ ' onClick="putDate(\''+(m==12?(y+1):y)+'-'+((m==12)?'0'+1:m1<10?'0'+m1:m1) +'-' +((i+1-d2)<10?('0'+(i+1-d2)):(i+1-d2))+ '\');">' + (i+1-d2) + '</td>';
          }
    }
    text2 += '</tr>\n</table>';   

        var m2 = m + 2;
        var text3 = '<table cellpadding="2" cellspacing="0" border="0">\n<tr><td colspan=7 style="text-align:center;font-size:12px;font-weight:bold;color:#0080FF;background-color:#DFEFFF;" valign="top">';
   
    text3 += (m==12?(y+1)+'년 ' +'0'+2: m==11?(y+1)+'년 ' +'0'+1:y +'년 ' +((m2 < 10) ? ('0' + m2) : m2)) + '월';
   
    text3 += '</td>';
        if(m2==14){m2=2; y=y+1;}
    var d3 = (y+(y-y%4)/4-(y-y%100)/100+(y-y%400)/400
          +m2*2+(m2*5-m2*5%9)/9-(m2<3?y%4||y%100==0&&y%400?2:3:4))%7;
    for (i = 0; i < 42; i++) {
        if (i%7==0) text3 += '</tr>\n<tr>';
       
        if((i+1-d3) == BD && m2==BM && y==BY){
            text3 += '<td style="font-size:12px;cursor:pointer;text-align:right;font-weight:bold;background-color:#FFDFEF;font-family:verdana;' + (i%7?'':'color:#FF0000;') +'"'+ ' onClick="putDate(\''+(m==12?(y+1):m==11?(y+1):y)+'-'+ ((m==12)?'0'+2:(m==11)?'0'+1:m2<10?'0'+m2:m2)+'-'+((i+1-d3)<10?('0'+(i+1-d3)):(i+1-d3))+'\');">' + (i+1-d3) + '</td>';
        }else{
            if (i < d3 || i >= d3+(m2*9-m2*9%8)/8%2+(m2==2?y%4||y%100==0&&y%400?28:29:30))
                  text3 += '<td> </td>';
            else
                text3 += '<td style="font-size:12px;cursor:pointer;text-align:right;font-family:verdana;color:#000000;' + (i%7?'':'color:#FF0000;') +'"'+ ' onClick="putDate(\''+y+'-'+ (m2<10?'0'+m2:m2) +'-'+ ((i+1-d3)<10?('0'+(i+1-d3)):(i+1-d3)) +'\');">' + (i+1-d3) + '</td>';
                }
           
    }
    text3 += '</tr>\n</table>';
//alert(m+'/'+m1+'/'+m2);
document.getElementById('tt').innerHTML =  text;
document.getElementById('calendarDiv1').innerHTML =  text1;
document.getElementById('calendarDiv2').innerHTML =  text2;
document.getElementById('calendarDiv3').innerHTML =  text3;
}


function showCal(obj){
var st = getRealOffsetTop(obj)+20;;
var sl = getRealOffsetLeft(obj);

document.getElementById("calendar").style.top = st;
document.getElementById("calendar").style.left = sl;
document.getElementById("calendar").style.display="block";

target = obj;
temp = target.value.split("-");
BY = parseInt(temp[0]);
BM = parseInt(temp[1]);
if(temp[2].substr(0,1) == "0"){
BD = parseInt(temp[2].substr(1,1));
}else{
BD = parseInt(temp[2]);
}
showCalendar(obj.value);
}

function putDate(d){
    target.value = d;
    closeCal();
}
function closeCal(){
    document.getElementById("calendar").style.display="none";
}
function getRealOffsetTop(o) { return o ? o.offsetTop + getRealOffsetTop(o.offsetParent) : 0; }
function getRealOffsetLeft(o) { return o ? o.offsetLeft + getRealOffsetLeft(o.offsetParent) : 0; }

//-->
</script>
<style>
.calPop {
padding-right: 0px;
padding-left: 0px;
padding-top: 0px;
padding-bottom: 0px;
z-index: 2;
top :0px;
left:0px;
display: none;
overflow:hidden;
width: 450px;
height:180px;
color: black;
position: absolute;
background-color:#FFFFFF;
}
</style>
</head>
<body>
<input type="text" name="checkindate" style="cursor:pointer;border:1px solid #EFEFEF;height:18px;font-family:돋움;font-size:12px;color:#666666;" onClick="showCal(document.getElementsByName('checkindate')[0]);" value="2008-03-05" readonly>
<input type="text" name="checkoutdate" style="cursor:pointer;border:1px solid #EFEFEF;height:18px;font-family:돋움;font-size:12px;color:#666666;" onClick="showCal(document.getElementsByName('checkoutdate')[0]);" value="2007-12-10" readonly>
<div id="calendar" class="calPop">
<table cellspacing="0" cellpadding="0" border="0" width="100%" style="position: absolute">
    <tr>
        <td style="position: absolute">
                <table cellpadding="0" cellspacing="5" border="0" style="border:1px solid #80BFFF;">
                    <tr>
                        <td colspan="3" align="center" id="tt"></td>
                    <tr>
                        <td id="calendarDiv1" style="font-family:verdana;border:1px solid #EFEFEF;" valign="top"></td>
                        <td id="calendarDiv2" style="font-family:verdana;border:1px solid #EFEFEF;" valign="top"></td>
                        <td id="calendarDiv3" style="font-family:verdana;border:1px solid #EFEFEF;" valign="top"></td>
                    </tr>
                    <tr>
                        <td align="center" colspan="3" style="font-size:11px;font-family:verdana;"><span style="cursor:pointer;font-weight:bold;" onClick="closeCal();">[Close]</span></td>
                    </tr>
                </table>
        </td>
    </tr>
</table>
</div>
</body>
</html>

출처:http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=59369&page=1

http://www.captcha.ru/en/kcaptcha/
여기 한번 가 보세요. 아마 러시아 개발자들이 아닌가 생각합니다.
이 켑챠는 다른 켑챠와는 달리 코드를 백그라운드와 노이즈 글자 색깔까지 랜덤으로 나오고, 디스토션까지 줄 수 있습니다.  이켑챠의 경우는 뚫릴 확률이 5% 미만으로 나온 아주 훌륭한 켑챠입니다.
제가 생각하는 단점으로는 노이즈와 디스토션이 제일 낮은 값으로 해도 유저층의 연령이 높은 경우 읽기 불편할 때도 있습니다.  그래서 전 코드 내에서 sin, cos 값을 약간 조절하고, 노이즈나 랜덤 칼라 색깔도 조금은 조정하여 씁니다. 그리고 몇가지 더 추가 기능을 더하구요. 그 코드까지는 security code의 성격상 공개할 수는 없구요. 이해해 주세요.

php 초보나 켑챠를 처음 공부하시는 분이라면, 사용하기 쉽고, 이해하기 쉬운 켑챠로는 이런게 있습니다.
http://www.white-hat-web-design.co.uk/articles/php-captcha.php
하지만 위의 켑챠처럼 단순한 경우는 거의 (90%이상) 뚤는 기술이 현재 나와 있습니다. 하지만, 제가 적용하 곳은 아직 뚫리지 않았습니다. 또 스팸어들이 그런 기술까지 도입하면서까지 뚫을려고 하지도 않겠죠. 

켑챠에 대한 연구자료 링크는 저장해 두지 않고, 기억나지 않아서... 패스.

아무튼 여러분 즐 코딩...


나이 좀 있는 개발자, 나야나 입니다.


관련 글...
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=58089&page=6


::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

<?php
session_start();

/*
* File: CaptchaSecurityImages.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 03/08/06
* Link: http://www.white-hat-web-design.co.uk/articles/php-captcha.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/

/*
* Modified by 냐야나 on 1/15/2007
*/

class CaptchaSecurityImages {

    var $font = 'monofont.ttf';

    // color must be hex number format.
    // blue on white
    var $background_color = "#FFFFFF" ;
    var $noise_color = "#6478B4" ;
    var $text_color = "#142864" ;
    
    // red on green
    //var $background_color = "#66FF00" ;
    //var $noise_color = "#6478B4" ;
    //var $text_color = "#FF0000" ;
    
    function CaptchaSecurityImages($width='120',$height='40',$characters='6') {
        $code = $this->generateCode($characters);
        /* font size will be 75% of the image height */
        $font_size = $height * 0.75;
        $image = @imagecreate($width, $height) or die('Cannot Initialize new GD image stream');
        
        /* set the colours */
        $rgb_background_color = $this->HEX2RGB( $this->background_color ) ;
        $background_color = imagecolorallocate($image, $rgb_background_color[0], $rgb_background_color[1], $rgb_background_color[2]);
        $rgb_text_color = $this->HEX2RGB( $this->text_color ) ;
        $text_color = imagecolorallocate($image, $rgb_text_color[0], $rgb_text_color[1], $rgb_text_color[2]);
        $rgb_noise_color = $this->HEX2RGB( $this->noise_color ) ;
        $noise_color = imagecolorallocate($image, $rgb_noise_color[0], $rgb_noise_color[1], $rgb_noise_color[2]);
        
        /* generate random dots in background */
        for( $i=0; $i<($width*$height)/3; $i++ ) {
            imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
        }
        
        /* generate random lines in background */
        for( $i=0; $i<($width*$height)/150; $i++ ) {
            imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
        }
        
        /* create textbox and add text */
        $textbox = imagettfbbox($font_size, 0, $this->font, $code);
        $x = ($width - $textbox[4])/2;
        $y = ($height - $textbox[5])/2;
        imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code);
        
        /* output captcha image to browser */
        imagejpeg($image);
        imagedestroy($image);
        $_SESSION['security_code'] = $code;
        
    }
    
    function generateCode($characters) {
        /* list all possible characters, similar looking characters and vowels have been removed */
        $possible = '23456789bcdfghjkmnpqrstvwxyz';
        $code = '';
        $i = 0;
        while ($i < $characters) {
            $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
            $i++;
        }
        return $code;
    }
    
    function HEX2RGB($colorin) {
        $rgb[0] = hexdec(substr($colorin, 1, 2)) ;
        $rgb[1] = hexdec(substr($colorin, 3, 2)) ;
        $rgb[2] = hexdec(substr($colorin, 5, 2)) ;
        return $rgb ;    
    }

}

$width = isset($_GET['width']) ? $_GET['width'] : '120';
$height = isset($_GET['height']) ? $_GET['height'] : '40';
$characters = isset($_GET['characters']) ? $_GET['characters'] : '6';

header('Content-Type: image/jpeg');
$captcha = new CaptchaSecurityImages($width,$height,$characters);

?>

위 코드를 저장한 파일이 CaptchaSecurityImages.php 라면...

폼에서...
<img src="CaptchaSecurityImages.php?characters=6&width=140&height=60">
<input type="text" name="security_code">

받아서...
if ( $_SESSION['security_code'] != $_POST['security_code'] ) {
    에러...
    go back
    exit / return
}

출처:http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=59365&page=1

function getBounds(tag)
{
    var ret = new Object();
    if(document.all) {
        var rect = tag.getBoundingClientRect();
        ret.left = rect.left + (document.documentElement.scrollLeft || document.body.scrollLeft);
        ret.top = rect.top + (document.documentElement.scrollTop || document.body.scrollTop);
        ret.width = rect.right - rect.left;
        ret.height = rect.bottom - rect.top;
    } else {
        var box = document.getBoxObjectFor(tag);
        ret.left = box.x;
        ret.top = box.y;
        ret.width = box.width;
        ret.height = box.height;
    }
    return ret;
}


var box = getBounds(document.getElementById('youranytag'));
box.left
box.top
box.width
box.height

댓글로 달았었는데, 검색이 용이하지 못하여 새글로 작성.
출처:http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=59355&page=1

var Calendar = Class.create();

Calendar.prototype = {

    initialize : function(e, obj) {

        this.event = (e) ? e : window.event;
        this.obj = obj;

        this.today = this.today = new Date();
        this.year = this.today.getFullYear();
        this.month = this.today.getMonth();
        this.date = 1;


        this.dayIndex = new Array('일','월','화','수','목','금','토');
        this.lastDate = new Array(31,  28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

        this.calWin = window.open('', 'calendar', 'width=200,height=180,top='+(this.event.clientY+100)+',left='+this.event.clientX);
        this.makeCal();
    },

    makeCal : function(type, addSub) {
        this.newDate = new Date(this.year, this.month, this.date);
        if(type && addSub) {
            if(type == 'year') {
                if(addSub == 'add') this.newDate.setFullYear(this.newDate.getFullYear()+1); else this.newDate.setFullYear(this.newDate.getFullYear()-1);
            } else if(type == 'month') {
                if(addSub == 'add') this.newDate.setMonth(this.newDate.getMonth()+1); else this.newDate.setMonth(this.newDate.getMonth()-1);
            }
        }

        this.year = this.newDate.getFullYear();
        this.month = this.newDate.getMonth();
        this.day = this.newDate.getDay();

        if(((this.year%4 == 0) && (this.year%100 != 0)) || (this.year%400 ==0)) {
            this.lastDate[1] = 29;
        } else {
            this.lastDate[1] = 28;
        }

        _cal = this;

        this.calsrc = "<table border='0' cellpadding='0' cellspacing='1' borderColor='#eeeeee' width='100%'>\n";
        this.calsrc += "<tr>\n";
        this.calsrc += "<td><span onClick=opener._cal.makeCal('year','sub')><<</span> <span onClick=opener._cal.makeCal('month','sub')><</span></td>\n";
        this.calsrc += "<td>"+this.newDate.getFullYear()+"년 "+(this.month+1)+"월</td>\n";
        this.calsrc += "<td><span onClick=opener._cal.makeCal('month','add')>></span> <span onClick=opener._cal.makeCal('year','add')>>></span></td>\n";
        this.calsrc += "</tr>\n";
        this.calsrc += "</table>\n";
        this.calsrc += "<table border='0' cellpadding='0' cellspacing='1' borderColor='#eeeeee' width='100%'>\n";
        this.calsrc += "<tr>\n";
        for(i=0; i<this.dayIndex.length; i++) {
            this.calsrc += "<td>"+this.dayIndex[i]+"</td>\n";
        }
        this.calsrc += "</tr>\n";
        for(i=0; i<this.day+this.lastDate[this.newDate.getMonth()];i++) {
            if(!(i%7)) {
                this.calsrc += "</tr>\n";
                this.calsrc += "<tr>\n";
            }

            if(i >= this.day) {
                this.calsrc += "<td><span onClick=opener._cal.setDate('"+((i-this.day)+1)+"')>"+((i-this.day)+1)+"</td>\n";
            } else {
                this.calsrc += "<td></td>\n";
            }
        }
        this.calsrc += "</tr>\n";
        this.calsrc += "</table>\n";

        this.calWin.document.open();
        this.calWin.document.clear();
        this.calWin.document.write(this.calsrc);
        this.calWin.document.close();
    },

    fillZero : function(len, value) {
        var value = value.toString();
        var addLen = len - value.length;
        for(i=0; i<addLen; i++) {
            value = "0"+value;
        }
        return value;
    },

    setDate : function(day) {
        $(this.obj).value = this.year+'-'+this.fillZero(2,this.month+1)+'-'+this.fillZero(2,day);
        this.calWin.close();
    }
}



<input type="text" name="date" id="date'><input type="button" onClick="new Calendar(event, 'date')" value="달력" />

이렇게 사용하면 됩니다.
급조하느라 부족한부분이 많습니다.


http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=59348&page=1

온라인상에 툴이 있을 경우 비교적 빨리 테스트해 볼 수 있어서 좋습니다.
제가 유용하게 사용하는 온라인 도구들을 모아 보았습니다.(링크#1)
여러분들도 유용하게 사용하는 온라인 도구들이 있으면 코멘트로 달아 공유해 주시면 고맙겠습니다.

phpSniff
http://phpsniff.sourceforge.net/
클라이언트 브라우저의 여러가지 정보를 보여줍니다.

BrowserSpy
http://gemal.dk/browserspy/
클라이언트의 브라우저 뿐만 아니라 설치되어 있는 플러그인과 플레이어 등에 대한 정보도 보여줍니다.

CSS Validator, HTML Validator
http://jigsaw.w3.org/css-validator/
http://validator.w3.org/
CSS 및 HTML이 W3C 권장사항에 맞는지 검사해 줍니다.

W3C Tools
http://www.w3.org/QA/Tools/
그밖의 여러가지 W3C 유효성 검사 도구들이 있습니다.

CheckDNS
http://www.checkdns.net/quickcheckdomainf.aspx
네임서버 설정이 제대로 되었는지 확인해 볼 수 있습니다.

DNS Tools
http://dns-tools.domaintools.com/
도메인과 아이피에 대한 간단한 Ping, Traceroute 그리고  DNS lookup 테스트를 할 수 있습니다.

Link Popularity Checker
http://www.pagerank.net/link-popularity-checker/
Google, AOL, AltaVista, AllTheWeb 그리고 Yahoo!에서의 사이트 순위를 다른 상대적 비교 사이트들의 목록속에서 보여줍니다.

SELF SEO
http://www.selfseo.com/
SEO(검색엔진최적화) 도구, Internet 도구 그리고 Webmaster 도구들로 나뉘어진 많은 온라인 툴들이 있습니다.
여러 검색엔진에서의 사이트 순위를 보여주는 도구라던가 아이피 주소로 간단하게 국가를 알아내는 도구, 자신의 아이피를 바로 보여주는 도구들이 유용할 거 같습니다.

Speed Test
http://www.dslreports.com/speedtest?flash=1
인터넷 속도를 측정해 주는 데가 많은데 이곳이 플래시로 비교적 깔끔하게 처리했습니다.

Whois Source
http://www.whois.sc/
모두가 알고 있듯이 도메인 네임과 아이피 정보를 보여줍니다.

String Conversion
http://www.qindex.info/Q_drctry/webtools/StringConversion.php
제가 만든건데 주로 즉석에서 문자열을 변환해서 볼때 사용합니다.

Editing Webpages
http://www.qindex.info/Q_drctry/webtools/EditingWebpage.php
이것도 제가 만든건데 즉석에서 HTML, CSS 그리고 JavaScript를 테스트해 볼때 사용합니다.

JS packer
http://dean.edwards.name/packer/
base62 encode 로 자바스크립트 소스를 압축합니다.

js 암호화
http://www.webtoolkit.info/javascript-sha1.html
스크립트로 암호화코드를 만들어 낼수있습니다.

html 태그정리기
http://www.killrain.net/channel/home/
태그 정리기 (조심해서 첫 디자인 html 줄마춤 할때만 사용합니다.)

http://ihelpers.co.kr
사이트 정보를 출력해준다 (서버,페이지,url)

http://www.iwebtool.com/tools/ 


출처:PHPSCHOOL

저작권은 명시가 안되어 있네요, 알아서 쓰삼;;;
이거 너무 퍼 날르는 거 아니삼?  (혼자 보기엔 아까워서);;;;

----------=----------------
/**
* multiSelect.js
*
* Converts multiple select form inputs into a DHTML
* version which uses checkboxes instead. This is more
* usable, due to people not knowing how to use a multiple
* select.
*
* The custom selects should end up the same width and height
* more or less as your existing select, so control that with
* css width and height, or the HTML "size" attribute.
*
* Coded by Kae - kae@verens.com
* I'd appreciate any feedback.
* You have the right to include this in your sites.
* Please retain this notice.
*
* Refactored into nice, pretty code by Richard Heyes (http://www.phpguru.org)
*/


var isMsie = document.all ? true : false;


/**
* Adds buildMultipleSelects() to the onload event.
*/
function addEvent(element, event, func)
{
  if (isMsie) {
    element.attachEvent(event, func);

  } else if (element.addEventListener) {
    element.addEventListener(event, func, false);
  }
}


/**
* Handles the conversion of multiple selects
*/
function buildMultipleSelects()
{
  var selectObjects = document.getElementsByTagName('select');

  if (!selectObjects) return;

  var i=0;
  var len= selectObjects.length;  // 무한루프 방지용
  while (i<len) {
    if (selectObjects[i].getAttribute("MULTICHECK") == null) {  // 기존 multiple 살림
      ++i;
      continue;
    }
    --len;

    var ms = selectObjects[i];

    var disabled = ms.disabled ? true : false;
    var width  = ms.style.width; // offsetWidth;
    var height  = ms.style.height; //offsetHeight;

    var divElement      = document.createElement('div');
    divElement.style.overflow = 'auto';
    divElement.style.width  = width;// + "px";
    divElement.style.height  = height;// + "px";
    divElement.style.border  = "2px inset white";
    divElement.style.font = "10pt Arial";
    divElement.className    = 'customMultipleSelect';

    optionObjects = ms.getElementsByTagName('option');

    for (var j=0; j<optionObjects.length; ++j) {
      var spanElement = document.createElement('div');

      spanElement.style.paddingLeft = "20px";
      spanElement.style.cursor = "default";
      spanElement.className = 'customMultipleSelect_option';

      addEvent(spanElement, 'onmousedown', function () {if (isMsie && event.srcElement.tagName.toLowerCase() == 'div' && !event.srcElement.firstChild.disabled) {event.srcElement.childNodes[0].checked = !event.srcElement.childNodes[0].checked;}})

      var inputElement  = document.createElement('input');
      inputElement.type = "checkbox";

      if (optionObjects[j].selected) {
        inputElement.checked    = true;
        inputElement.defaultChecked = true;
      }

      if (disabled) {
        inputElement.disabled = true;
      }

      inputElement.value      = optionObjects[j].value;
      inputElement.style.marginLeft = "-16px";
      inputElement.style.marginTop  = "-2px";
      inputElement.name      = ms.name;

      var textLabel = document.createTextNode(optionObjects[j].text);

      spanElement.appendChild(inputElement);
      spanElement.appendChild(textLabel);
      divElement.appendChild(spanElement);
    }

    ms.parentNode.insertBefore(divElement, ms);
    ms.parentNode.removeChild(ms);
  } // while
}

addEvent(window, isMsie ? 'onload' : 'load', buildMultipleSelects);

--------------=----------multiSelect.js 끝 -----------
<html>
    <head>
        <script src="multiSelect.js" type="text/javascript"></script>

        <style type="text/css">
        <!--
            .customMultipleSelect {
                overflow: auto;
                border: 2px inset white;
            }

            .customMultipleSelect_option {
                border-bottom: 1px solid #eeeeee;
                font: 10pt Tahoma;
                padding: 1px;
                padding-left: 20px;
                width: 100%;
            }
        // -->
        </style>
    </head>
<body>

<select multicheck name="foo[]" style="width: 200px; height: 100px">
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3" selected>Option 3</option>
    <option value="4" selected>Option 4</option>
    <option value="5">Option 5</option>
    <option value="6">Option 6</option>
    <option value="7">Option 7</option>
</select>

<br>
기냥 select multiple<br>
<select name="foo3[]" style="width: 200px; height: 100px" size=5 multiple>
    <option value="1">A</option>
    <option value="2">B</option>
    <option value="3">C</option>
    <option value="4">D</option>
    <option value="5">E</option>
    <option value="6">F</option>
    <option value="7">G</option>
</select>

<select name="foo2[]" style="width: 200px; height:110px" multicheck>
    <option value="1">A</option>
    <option value="2">B</option>
    <option value="3">C</option>
    <option value="4">D</option>
    <option value="5">E</option>
    <option value="6">F</option>
    <option value="7">G</option>
</select>


</body>
</html>


출처:PHPSCHOOL 까칠한고민남님

<html>
<head>
<style>
div { padding-top:5px; }
</style>
</head>
<body>
<div id="a"></div>
<script>
var a = document.getElementById("a");
var s = (a.currentStyle) ? a.currentStyle : document.defaultView.getComputedStyle(a, '');
alert(s.paddingTop);
</script>
</body>
</html>

마우스 올린 객체에 적용된 스타일이 무엇인지 볼 수 있는 라이브러리를 만들 수 있겠네요.




<html>
<head>
<style>
.a {
    background-color:red;
}
.b {
    background-color:blue;
}
</style>
<script>
function getStyleFromObj(obj)
{
    return (obj.currentStyle) ? obj.currentStyle : document.defaultView.getComputedStyle(obj, '');
}
</script>
</head>
<body>
<div id="d" class="a">asdf</div>
<div id="v"></div>
<a href="#" onclick="document.getElementById('d').className = 'a'; return false;">a</a>
<a href="#" onclick="document.getElementById('d').className = 'b'; return false;">b</a>
<a href="#" onclick="document.getElementById('v').innerHTML = getStyleFromObj(document.getElementById('d')).backgroundColor; return false;">view</a>
</body>
</html>

출처:PHPSCHOOL 송효진님

2008년2월1일
/etc/sysconfig/iptables 안에 80번포트 막기

####### cn(중국아이피)  fd6버젼######
-A RH-Firewall-1-INPUT -s 116.1.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.2.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.4.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.8.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.13.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.16.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.52.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.56.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.58.128.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.58.208.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.60.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.66.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.69.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.70.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.76.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.89.144.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.90.184.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.95.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.112.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.116.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.128.0/10 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.192.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.193.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.193.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.194.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.196.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.198.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.199.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.199.128.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.204.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.207.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.208.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.212.160.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.213.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.213.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.214.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.214.64.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.214.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.215.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.216.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.224.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.242.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.244.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.248.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.252.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.254.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 116.255.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.8.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.21.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.22.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.24.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.32.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.40.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.44.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.48.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.53.48.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.53.176.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.57.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.58.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.59.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.60.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.64.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.72.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.74.64.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.74.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.75.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.76.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.80.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.100.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.103.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.103.128.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.106.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.112.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.120.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.120.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.121.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.121.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.121.192.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.122.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.124.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 117.128.0/10 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.24.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.64.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.66.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.67.112.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.72.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.80.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.84.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.88.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.88.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.88.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.89.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.91.240.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.102.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.112.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.120.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.124.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.126.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.132.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.144.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.178.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.180.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.184.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.192.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.212.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.224.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.228.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.230.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.239.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.242.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.244.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 118.248.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.0.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.2.0.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.2.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.3.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.4.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.8.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.10.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.15.136.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.16.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.18.192.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.18.208.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.18.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.19.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.20.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.27.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.27.160.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.27.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.28.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.30.48.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.31.192.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.32.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.40.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.40.64.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.40.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.41.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.42.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.42.136.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.42.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.44.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.48.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.57.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.58.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.59.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.60.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.62.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.63.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.75.208.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.78.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.80.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 119.88.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.0.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.4.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.8.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.16.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.32.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.40.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.46.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.48.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.51.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.52.160.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.52.208.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.52.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.55.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.56.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.58.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.58.144.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.59.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.60.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.68.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.76.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.79.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.89.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.100.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.101.208.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.192.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.201.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.204.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.224.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.248.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 121.255.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.0.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.0.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.4.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.8.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.48.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.49.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.51.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.64.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.96.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.102.0.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.102.64.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.112.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.119.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.136.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.144.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.152.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.156.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.192.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.198.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.200.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.204.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.224.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.240.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 122.248.48.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.0.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.4.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.8.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.49.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.52.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.56.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.64.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.96.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.98.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.99.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.100.0.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.101.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.103.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.108.128.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.108.208.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.112.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.128.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.136.80.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.137.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.138.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.144.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.160.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.176.80.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.177.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.178.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.180.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.184.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.196.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.199.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.206.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.232.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.242.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.244.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.249.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 123.253.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.6.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.14.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.16.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.20.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.28.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.29.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.31.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.40.112.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.40.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.42.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.47.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.64.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.66.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.67.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.68.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.72.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.88.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.108.8.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.108.40.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.112.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.126.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.128.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.147.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.156.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.160.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.172.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.192.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.196.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.200.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.220.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.224.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.240.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.240.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.242.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.243.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.248.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.249.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.250.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 124.254.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.31.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.32.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.58.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.61.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.62.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.64.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.96.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.98.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.104.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.112.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.169.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.171.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.208.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.210.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.213.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.214.96.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.215.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.216.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 125.254.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 134.196.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 159.226.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 161.207.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 162.105.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 166.111.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 167.139.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 168.160.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 192.83.122.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 192.83.169.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 192.124.154.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 192.188.170.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 198.17.7.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.0.110.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.0.176.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.4.128.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.4.252.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.8.128.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.10.64.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.14.88.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.14.235.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.14.236.0/23 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.14.238.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.20.120.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.22.248.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.0.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.128.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.136.0/23 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.138.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.140.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.144.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.149.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.150.0/23 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.152.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.156.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.158.0/23 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.160.0/23 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.164.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.168.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.176.0/23 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.184.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.38.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.41.152.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.41.240.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.43.144.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.46.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.46.224.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.60.112.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.63.248.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.69.4.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.69.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.70.0.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.74.8.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.75.208.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.85.208.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.90.0.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.90.224.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.90.252.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.91.0.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.91.128.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.91.176.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.91.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.92.0.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.92.252.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.93.0.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.93.252.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.94.0.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.95.0.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.95.252.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.96.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.112.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.120.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.122.0.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.122.32.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.122.64.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.122.112.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.122.128.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.123.96.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.124.24.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.125.176.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.127.0.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.127.12.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.127.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.127.40.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.127.48.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.127.112.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.127.128.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.127.160.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.127.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.130.0.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.130.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.131.16.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.131.48.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.131.208.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.136.48.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.136.208.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.136.224.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.136.252.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.141.160.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.142.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.143.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.148.96.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.149.160.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.149.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.150.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.152.176.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.153.48.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.158.160.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.160.176.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.164.0.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.164.25.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.165.96.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.165.176.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.165.208.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.168.160.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.170.128.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.170.216.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.173.8.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.173.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.179.240.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.180.128.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.181.112.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.189.80.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 202.192.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.18.50.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.78.48.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.79.0.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.80.144.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.81.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.83.56.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.86.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.86.64.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.88.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.88.192.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.89.0.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.90.0.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.90.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.90.192.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.91.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.91.96.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.91.120.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.92.0.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.92.160.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.93.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.94.0.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.95.0.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.95.96.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.99.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.99.80.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.100.32.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.100.80.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.100.96.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.100.192.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.110.160.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.118.192.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.119.24.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.119.32.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.128.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.128.96.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.128.128.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.130.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.132.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.134.240.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.135.96.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.135.160.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.148.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.152.64.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.156.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.158.16.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.161.192.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.166.160.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.171.224.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.174.7.0/24 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.174.96.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.175.128.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.175.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.176.168.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.184.80.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.187.160.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.190.96.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.191.16.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.191.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.191.144.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.192.0.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.196.0.0/21 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.207.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.207.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.208.0.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.208.16.0/22 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.208.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.209.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.212.0.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.212.80.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.222.192.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 203.223.0.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.2.0.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.5.0.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.5.128.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.12.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.14.64.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.14.112.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.14.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.15.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.15.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.16.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.21.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.22.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.23.32.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.25.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.26.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.28.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.32.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.51.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.52.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.56.192.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.72.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.76.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.78.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.79.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.79.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.82.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.87.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.185.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.192.96.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 210.211.0.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 211.64.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 211.80.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 211.96.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 211.136.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 211.144.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 211.160.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 218.0.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 218.56.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 218.64.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 218.96.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 218.104.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 218.108.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 218.185.192.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 218.192.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 218.240.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 218.249.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 219.72.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 219.82.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 219.128.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 219.216.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 219.224.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 219.242.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 219.244.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.101.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.112.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.152.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.154.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.160.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.192.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.231.0.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.231.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.232.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.234.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.242.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.248.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 220.252.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.0.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.8.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.12.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.12.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.13.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.14.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.122.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.129.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.130.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.133.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.136.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.172.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.176.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.192.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.196.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.198.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.199.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.199.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.199.192.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.199.224.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.200.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.208.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 221.224.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.16.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.32.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.64.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.125.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.126.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.128.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.160.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.168.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.176.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.192.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.240.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 222.248.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.14.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.16.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.24.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.30.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.32.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.66.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.68.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.82.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.87.64.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.99.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.100.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.116.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.128.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.144.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.154.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.192.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 58.240.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.32.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.64.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.80.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.107.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.108.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.151.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.155.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.172.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.191.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.191.240.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 59.192.0/10 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.0.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.55.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.63.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.160.0/11 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.194.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.200.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.208.0/12 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.232.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.235.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.245.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.247.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.252.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.253.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 60.255.0/16 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.4.64.0/19 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.4.176.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.8.160.0/20 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.28.0.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.29.128.0/17 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.45.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.47.128.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.48.0/13 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.87.192.0/18 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.128.0/10 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.232.0/14 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.236.0/15 -m tcp -p tcp --dport 80 -j DROP
-A RH-Firewall-1-INPUT -s 61.240.0/14 -m tcp -p tcp --dport 80 -j DROP

출처:PHPSCHOOL

다중 select처럼 작동하는 radio 입니다.

Q&A에 질문이 있길래 검색해서 비슷한 걸 찾았습니다.
원본은 http://rawlinson.us/blog/documents/jsradio.html 에서 퍼왔고
그 페이지의 "this link "라는 걸 클릭하면 radio버턴이 나타날 겁니다.

원본을 약간 수정해서 테스트 했습니다.
수정 내용은 <UL> <LI> 동적 생성하던 부분 제거했습니다.
그리고 동적 생성된 radio의 checked도 가능하게 추가했습니다.

---------------------=---------------------------
<html>
<body>
<FORM METHOD=POST ACTION="">
  <INPUT TYPE="radio" NAME="bbs_type" value='norm' onclick="return drawRadios('norm','no');">일반형</INPUT>
  <INPUT TYPE="radio" NAME="bbs_type" value='norm' onclick="return drawRadios('lect','outer_level');">강좌형</INPUT>
  <INPUT TYPE="radio" NAME="bbs_type" value='norm' onclick="return drawRadios('forum','no');">포럼형</INPUT>
  <hr>
  <div id="nextRdio"></div>
  <INPUT TYPE="submit">
</FORM>
</body>

<script>
function getStyleObject(objectId) {
  var theObject = null;

  // cross-browser function to get an object given its id
  if(document.getElementById && document.getElementById(objectId)) // W3C DOM
    theObject= document.getElementById(objectId);
  else if (document.all && document.all(objectId)) // MSIE 4 DOM
    theObject= document.all(objectId);
  else if (document.layers && document.layers[objectId]) // NN 4 DOM.. note: this won't find nested layers
    theObject = document.layers[objectId];
  else
    theObject=false;
  return theObject;
}

// 인수 checked는 두번째 radio 배열의 key값 중에 하나를 사용하며
// key값과 같은 값을 주면 그 radio를 체크상태로 초기화 할 수 있다
function drawRadios(bbs_type,checked){
  var MENT_TYPES={
    'norm':['no','inner_norm','inner_level','outer_norm','outer_level'],
    'lect':['no','outer_norm','outer_level'],
    'forum':['no']
  };
  var ment_name={
    'no':'사용안함',
    'inner_norm':'내장일반',
    'inner_level':'내장계층',
    'outer_norm':'외부일반',
    'outer_level':'외부계층'
  };
  var ment_type= MENT_TYPES[bbs_type];

  var p = getStyleObject("nextRdio");
  var ul = document.createElement('ul');

  p.innerHTML ='';  // child를 다지운다
  ul.style.display='inline-block';//'block';
//  p.appendChild(ul);


  for(var i=0;i<ment_type.length;i++){
//    li = document.createElement('li');

//    ul.appendChild(li);

    // try/catch: try works in IE 6 (maybe 7) catch works in ff/ns browsers
    // however, no error is thrown in opera 8 (in the try), but no radio is drawn in opera 8 either.
    try{
      rdo = document.createElement('<input type="radio" name="ment_type" />');
    }catch(err){
      rdo = document.createElement('input');
      rdo.setAttribute('type','radio');
      rdo.setAttribute('name','ment_type');
    }
    rdo.id = 'ment_type'+i;
    rdo.value = ment_type[i];

    lbl = document.createElement('label');
    // set the label in IE..
    lbl.setAttribute('htmlFor', rdo.id);
    // set the label for other browsers
    lbl.setAttribute('for', rdo.id);
    var tn = document.createTextNode(ment_name[ment_type[i]]+' ');
    lbl.appendChild(tn);
    p.appendChild(rdo);
    p.appendChild(lbl);

    if (checked==rdo.value)
      rdo.checked = true;
  }
  return true;
}
</script>
</body>

출처:PHPSCHOOL

키 또는 조합
용도
Esc
페이지 읽기 중지
F5 또는 Ctrl+R 또는 Ctrl+F5
새로고침(Reflash)
Shift+Spacebar
페이지 위로 이동(스크롤 업)
Spacebar
페이지 아래로 이동(스크롤 다운)
Alt+O
URL로 열기 및 기능 호출
Shift+F10
선택한 아이템의 콘텍스트 메뉴 호출
Shift+마우스 왼쪽 버튼
새 창에 띄우기
Ctrl+마우스 왼쪽 버튼
현재 탭을 유지하면서 백그라운드로 새 탭 열기
Ctrl+Shift+마우스 왼쪽 버튼
현재 탭에서 새 탭으로 이동하면서 열기(포그라운드 열기)
F11 또는 Alt+Enter
전체 화면 모드로 전환
Ctrl 키 콤비네이션
Ctrl+Enter
주소표시줄에서 www와 .com자동 삽입
Ctrl+T
새 탭 열기
Ctrl+Tab
열린 탭들 사이 전환(오른쪽으로 순환)
Ctrl+Shift+Tab
열린 탭들 사이 전환(왼쪽으로 순환)
Ctrl+W
열린 탭 닫기, 탭이 없으면 IE7종료
Ctrl+숫자(n)
3개의 탭이 열렸다면 1, 2, 3으로 선택(8개까지 가능)
Ctrl+9
마지막으로 열린 탭 선택
Ctrl+Alt+F4
모든 탭 닫기
Ctrl+Q
빠른 탭 열기(현재 탭에서 열린 모든 탭을 출력해서 선택)
Ctrl+(+)
10% 비율로 페이지 확대
Ctrl+(+)
10% 비율로 페이지 축소
Ctrl+0
100% 기본 값으로 복원
Ctrl+A
페이지 전체 선택
Ctrl+B
즐겨 찾기 관리 기능 호출
Ctrl+D
즐겨찾기에 추가 및 기능 호출
Ctrl+E
검색 상자 선택
Ctrl+F
찾기 및 기능 호출
Ctrl+H
즐겨찾기 센터의 열어 본 페이지 목록
Ctrl+I
즐겨찾기 센터의 즐겨 찾기 목록
Ctrl+J
즐겨 찾기 센터의 피드 목록
Ctrl+N
새 창 띄우기
Ctrl+P
인쇄 및 기능 호출
Ctrl+R
새로 고침
Ctrl+F4
탭 닫기
Alt 키 콤비네이션
Altr
메뉴 호출
Alt+Enter
주소표시줄에서 새탭 열기
F11 또는 Alt+Enter
IE 윈도에서 전체 화면 도드로 전환
Alt+Home
시작 페이지로 이동
Alt+F4
현재창 닫기 및 기능 호출
Alt+왼쪽 방향키
이전 페이지로 이동
Alt+오른쪽 방향키
다음 페이지로 이동
Alt+스페이스
IE7 윈도 메뉴
Alt+A
IE7 메뉴 즐겨 찾기 목록 호출
Alt+C
즐겨 찾기 센터호출
Alt+D
주소 표시줄 선택
Alt+E
IE7 메뉴 편집 호출
Alt+F
IE7 메뉴 파일 호출
Altl+M
IE7 도구 홈 호출
Alt+H
IE7 메뉴 도움말 호출
Altl+J
IE7 도구 피드 호출
Altl+O
IE7 도구 도구 호출
Altl+P
IE7 도구 페이지 호출
Alt+T
IE7 메뉴 도구 호출
Alt+V
IE7 메뉴 보기 호출
Altl+Z
즐겨 찾기 추가
펑션키
F1
도움말
F3
찾기 및 기능 호출
F4
주소표시줄에 방문한 URL목록 출력
Ctrl+F4
현재 탭 닫기
F5
새로 고침
F6
주소표시줄 선택
F10
IE7 메뉴 열기
F11
전체 화면 모드

출처 : http://kin.naver.com/open100/db_detail.php?d1id=1&dir_id=10201&eid=CVJQ77+utOKe+mTmJBgYPtA+9+OoatMF&qb=SUU3IMXHILTcw+DFsA

①인터넷을 검색하다 앞화면으로 가고 싶다면....
마우스를 사용하셨죠. 위에 메뉴중 마우스로 뒤로가기... 이제 그만 하세요...
자판에 ◀━를 눌러 보세요.(엔터키 위에 있는건 알죠. back키 아시죠.)

②F1.... 인터넷 도움말이 나오네요....
인터넷에 대해 이제쉽게 도움받으세요.

③F3.... 파일찾기가 나오네요...
찾고 싶은 파일...이제 쉽게 찾으세요.

④F4.... 주소창이 나오네요...
주소를 고를 때도 자판의 화살표로 이동하세요.
아래로 위로 잘 골라서엔터키를 치시면, 이동하고 싶은 주소로 이동합니다.

⑤F5.... 새로고침.... 이 되네요....
검색하다 빨리 새로 고치고 싶을 때 마우스 필요없어요.

⑥F6.... 주소창에 블럭이 설정됩니다.
이기능은 주소창에 저장 되어있지 않는 새로운 주소로 이동 할때 사용하는데,
F6키를 누르면 블럭이 설정되고 이때 Delete키를 치면 주소창이 지워집니다.
그리고 새로운 주소를 직접치고 엔터를 치세요. 새로운 주소로 이동되죠.

⑦F11.....화면을 넓게 보고 싶을때 사용하세요.
위, 아래에 메뉴창이 사라지면서 화면이 아주 넓어집니다.

⑧Ctrl + N......현재 페이지가 하나더 생기네요.
로그인까지 되어서....

⑨Ctrl + W.......에구 열심히 하고 있는 현재 페이지가 없어지고 말았네....
저장해야 되는거는 사용하지 마시고요... 다른사람이 보면 안되는거....갑자기...누가오면 ....
보던 페이지가 사라지니까..... 뭐했는지 모르겠죠.....

**Alt 키와 Ctrl키의 사용**

1. 웹 페이지의 앞,뒤 전환은
'Alt 키 + 왼쪽/오른쪽 화살표 키'를 함께 누르면 됩니다.
바로 앞에 보았던 페이지나 다음 페이지로 쉽게 전환이 가능하죠.

2. 가끔 인터넷 홈페이지의 그림이 지저분하게 겹쳐 보일 때가 있죠.

이때는 'Ctrl'키 + R키'를 눌러주면 지금보고 있는
페이지의 내용을 다시 읽어주게 됩니다.

3. 여러 홈페이지를 돌아다니다 마음에 드는 홈페이지가 있으면
북마크 (Book-mark) 기능을 사용하죠.
이런 경우 'Ctrl + D'키를 누르면 쉽게 해결이 됩니다.

4. 그럼 저장된 북마크를(즐겨찾기 편집창) 편집하거나 정리할 때...?
'Ctrl 키 + B 키'를 사용하면 바로 북마크 폴더로 이동됩니다.

5. 현재의 창을 그대로 나두고 또 하나의 새로운 창을 만들 때
'Ctrl 키 + N 키'를 사용해 보세요. 파일을 다운 받거나 서버로 부터
응답이 늦어질 때, 이 단축키를 열어 다른 링크 사이트로 접근이 가능합니다.

6. 현재 열려있는 창을 닫으려면 'Alt 키 + F4 키'죠.
만약 바탕화면에서 이 단축키를 사용한다면 바로 시스템 종료 창이 나타납니다.

7. 웹 사이트의 주소창만 띄워 새로운 사이트를 열려면
'Ctrl 키 + O 키'를 사용하면 됩니다. 이것도 고수가 자주 사용하는 기능입니다.

 

위에서 설명한 것 중 많이 사용하는것을 하나씩 직접 해보세요.

Alt + <- (왼쪽 화살표) ▶ 이전 페이지로
Alt + -> (오른쪽 화살표) ▶ 다음 페이지로
Alt + F4 ▶ 열려있는 창 닫기(Ctrl + W 와 비슷)
Ctrl + R ▶ 문서 다시 읽어 들임
Ctrl + B ▶ 북마크(즐겨기 편집창) 폴더로 이동
Ctrl + D ▶ 북마크에 추가
Ctrl + N ▶ 새로운 창 생김
Ctrl + O ▶ 새로운 주소 입력창 열기


▷마우스 볼과 같은 기능◁

↑ ↓ 키는 볼을 굴리지 않아도 현재창을 위, 아래로 쉽게 움직일 수 있음.


기 타

F10 : 프로그램에서 메뉴 모음을 활성화 
Alt + 메뉴의 밑줄 문자 누르기 : 메뉴의 해당 명령을 수행 
Ctrl + F4 : 프로그램의 현재 창 닫기 
Alt + F4 : 현재 창을 닫거나 프로그램 종료 
Ctrl + C : 복사 
Ctrl + X : 잘라내기 
Ctrl + V : 붙여 넣기 
Alt + 스페이스바 : 현재 창의 시스템 메뉴 표시 
Shift + F10 : 선택한 항목의바로 가기 메뉴 표시 
Ctrl + Esc : '시작'메뉴 표시 
Alt + - : 프로그램의 시스템 메뉴 표시 
Alt + Tab : 다른 창으로 전환 
Ctrl + Z : 실행 취소 
윈도 창에서 Alt + Enter : 창의 크기를 크게, 작게 
일반 키보드 바로 가기
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Ctrl+C (복사)
Ctrl+X (잘라내기)
Ctrl+V (붙여넣기)
Ctrl+Z (실행 취소)
Delete (삭제)
Ctrl + 휠마우스 위로, 또는 아래로 (위로 : 텍스트 글꼴 확대, 아래로:글꼴 작게)
Shift + 휠마우스 위로, 또는 아래로...
(위로 : 웹페이지 앞으로, 아래로:웹페이지 뒤로)
Alt + 왼쪽화살표 (웹사이트 이전페이지)
Alt + 오른쪽화살표 (사이트 앞으로가기)
Shift+Delete (선택한 항목을 휴지통에 넣지 않고 영구적으로 삭제)
항목을 끌면서 Ctrl 키 누름 (선택한 항목을 복사)
항목을 끌면서 Ctrl+Shift 누름 (선택한 항목의 바로 가기를 만듬)
F2 키 (선택한 항목의 이름 바꾸기)
Ctrl+오른쪽 화살표 (삽입 지점을 다음 단어의 처음으로 이동)
Ctrl+왼쪽 화살표 (삽입 지점을 이전 단어의 처음으로 이동)
Ctrl+아래쪽 화살표 (삽입 지점을 다음 단락의 처음으로 이동)
Ctrl+위쪽 화살표 (삽입 지점을 이전 단락의 처음으로 이동)
화살표 키 중 하나와 함께 Ctrl+Shift 누름 (텍스트 블록 강조 표시)
화살표 키 중 하나와 Shift 키 누름
(창이나 바탕 화면에서 둘 이상의 항목을 선택하거나 문서에서 텍스트를 선택)
Ctrl+A (모두 선택)
F3 키 (파일 또는 폴더 찾기)
Alt+Enter (선택한 항목의 등록 정보 보기)
Alt+F4 (활성 항목을 닫거나 활성 프로그램을 종료)
Alt+Enter (선택한 개체의 등록 정보 표시)
Alt+스페이스바 (활성 창의 바로 가기 메뉴 열기)
Ctrl+F4 (여러 문서를 동시에 열 수 있는 프로그램에서 활성 문서 닫기)
Alt+Tab (열린 항목 사이에서 전환)
Alt+Esc (연 순서대로 항목을 순환)
F6 키 (창이나 바탕 화면의 화면 요소를 순환)
F4 키 (내 컴퓨터나 Windows 탐색기에서 주소 표시줄 목록 표시)
Shift+F10 (선택한 항목의 바로 가기 메뉴 표시)
Alt+스페이스바 (활성 창의 시스템 메뉴 표시)
Ctrl+Esc (시작 메뉴 표시)
Alt+메뉴 이름에서 밑줄이 표시된 문자 (해당 메뉴 표시)
명령 이름이나 열린 메뉴 이름에서 밑줄이 표시된 문자 (해당 명령 수행)
F10 키 (활성 프로그램의 메뉴 모음 활성화)
오른쪽 화살표 키 (오른쪽 방향의 다음 메뉴를 열거나 하위 메뉴 열기)
왼쪽 화살표 키 (왼쪽 방향의 다음 메뉴를 열거나 하위 메뉴 닫기)
F5 키 (활성 창 업데이트)
백스페이스 키 (내 컴퓨터나 Windows 탐색기에서 한 레벨 위의 폴더 보기)
Esc 키 (현재 작업 취소)
CD-ROM 드라이브에 CD-ROM을 넣을 때 Shift 키 누름
(CD-ROM이 자동으로 재생되지 않게 함)

캐릭터셋이 euc-kr 이라 전제하고

$temp_var = "a-_fa(#)^$*F&3i4-0한2글abc3국민 az?/a*&韓お手?ご迷惑をお掛けしました、";
$cnt = strlen($temp_var);
$array = array();
for($i = 0; $i < $cnt; $i++)
{
    if(ord($temp_var[$i]) < 128)
    {
        $array[] = $temp_var[$i];
    }
    else{
        $array[] = substr($temp_var, $i, 2);
        $i++;
    }
}

array
  0 => string 'a' (length=1)
  1 => string '-' (length=1)
  2 => string '_' (length=1)
  3 => string 'f' (length=1)
  4 => string 'a' (length=1)
  5 => string '(' (length=1)
  6 => string '#' (length=1)
  7 => string ')' (length=1)
  8 => string '^' (length=1)
  9 => string '$' (length=1)
  10 => string '*' (length=1)
  11 => string 'F' (length=1)
  12 => string '&' (length=1)
  13 => string '3' (length=1)
  14 => string 'i' (length=1)
  15 => string '4' (length=1)
  16 => string '-' (length=1)
  17 => string '0' (length=1)
  18 => string '한' (length=2)
  19 => string '2' (length=1)
  20 => string '글' (length=2)
  21 => string 'a' (length=1)
  22 => string 'b' (length=1)
  23 => string 'c' (length=1)
  24 => string '3' (length=1)
  25 => string '국' (length=2)
  26 => string '민' (length=2)
  27 => string ' ' (length=1)
  28 => string 'a' (length=1)
  29 => string 'z' (length=1)
  30 => string '?' (length=1)
  31 => string '/' (length=1)
  32 => string 'a' (length=1)
  33 => string '*' (length=1)
  34 => string '&' (length=1)
  35 => string '韓' (length=2)
  36 => string 'お' (length=2)
  37 => string '手' (length=2)
  38 => string '?' (length=1)
  39 => string 'ご' (length=2)
  40 => string '迷' (length=2)
  41 => string '惑' (length=2)
  42 => string 'を' (length=2)
  43 => string 'お' (length=2)
  44 => string '掛' (length=2)
  45 => string 'け' (length=2)
  46 => string 'し' (length=2)
  47 => string 'ま' (length=2)
  48 => string 'し' (length=2)
  49 => string 'た' (length=2)
  50 => string '、' (length=2)


구구단(19단) :

http://oxtag.com/php/p/99dan.php



기념일 계산 날짜 계산 및 음력, 양력
http://oxtag.com/php/p/Date/Date.php



디데이(D-DAY) 카운터 사용법 :
http://tagpia.maru.net/php/p/Date/D-DAY/user.php



기념일 카운터 사용법 :
http://tagpia.maru.net/php/p/Date/D-DAY/user2.php



기념일 계산,날자 계산,날짜 계산,음력 변환,양력 변환,
음양력 변환,윤달,요일 계산,남은 날짜,요일계산,며칠째,몇일째
http://oxtag.com/php/p/calendar2.php



타임스템프(Timestamp) 계산기
http://oxtag.com/php/p/timestamp_change.php
Timestamp - Date Manager
타임스템프(Timestamp) 계산기



도량형 환산표, 단위 환산, 면적 구하는 공식, 면적단위
http://oxtag.com/php/p/DoRyangHyung/
도량형 환산표, 단위 환산, 면적 구하는 공식, 면적단위



세금계산서 : 부가세포함, 부가세별도, 부가세 미포함 계산기
http://oxtag.com/php/p/tax_bill.php
세금계산서 : 부가세포함, 부가세별도, 부가세 미포함 계산기



단기,서기,육십갑자,띠 조회
http://oxtag.com/php/p/yuksipgapja.php
단기,서기,육십갑자(六十甲子),육십간지(六十干支),
십간십이지 (十干十二支),십이지신,십이간지,십이지,십이지신,십간,띠,十二辰



로또(LOTTO) 추첨기 대박나세요.
http://oxtag.com/php/p/lotto/lotto2.php



태그연습장, 웹소스보기
태그연습장 및 웹소스보기 입니다.
http://oxtag.com/html/ex/CTediter/CTediter.html



온라인 타자연습기, 웹타자연습, 타이핑연습,
웹 타자연습, 영타연습, 영문타자, 한타, 영타
온라인 타자 연습기 입니다.
온라인 타자 연습, 웹 타자연습기, 타이핑, 영타연습, 영문타자, 한타, 영타
http://oxtag.com/php/taja/taja.html




택배조회 배송조회 배송추적 배송검색 택배추적
택배조회,추적,택배검색,배송조회:호남택배,KBG택배,KGB특급,CJGLS,로젠,한진,우체국,삼성HTH,대한통운,옐로우캡,트라넷택배,현대택배,훼미리택배,고려택배,이클라인(ECLINE),아주,KT로지스,양양택배,일양택배,DHL,Fedex,UPS,EMS,경동택배,하나로택배,하나로로지스,천일화물택배
http://oxtag.com/html/ex/DoorToDoor/




경동택배 전국 영업소 전화번호 및 택배조회, 배송조회, 배송추적
경동택배 전국 영업소 전화번호 및 택배조회, 배송조회, 배송추적
http://oxtag.com/php/kdexp/



webime, web ime, web hangul ime, korea ime, webime, web_ime
외국 나갔을때 한글 윈도우 또는 한글 IME 설치가 되어 있지 않는 경우 영문을 한글로 바꿔주는 웹 IME입니다.
http://oxtag.com/php/webIme/



한자사전
http://211.46.71.249/handic/



아이콘 사이트
http://www.garamart.com/icons06071/Icon_main/iconindex.asp
http://www.garamart.com/



귀여운 퍼스나콘 모음
http://blog.naver.com/dnelfksp/40030886279



Escape ↔ Unescape
UTF8 Encode ↔ UTF8 Dncode
URL Encode ↔ URL Dncode

소스 및 미리보기 : http://oxtag.com/php/p/utf8_encode.php


URL Encode / URL Decode / Escape / Unescape ...
미리보기 : http://oxtag.com/php/p/unicode/StringConversion.php



인코딩 - 암호화,복호화
http://oxtag.com/php/p/encoder.php



파일명 한글일때 인코딩
파일명이 한글인 경우 이미지가 엑박으로 뜨거나 음악이 재생 안될때 사용하세요.
http://oxtag.com/php/p/URLChange2.php



바이오리듬 - biorhythm
http://oxtag.com/php/biorhythm2/biorhythm.php



소스 하일라이터 - 소스색상입히기
http://oxtag.com/php/SourceHighlight/



CPP2HTM - 소스하일라이트, 소스색상입히기
http://oxtag.com/php/p/CPP2HTM/input.php



후이즈 도메인 검색
http://oxtag.com/cgi/WHOIS/whois.cgi



웹 FTP, 웹FTP, web ftp
계정정보는 저장되지 않으니까 안심하셔도됨니다.
FTP 프로그램을 설치하지 않고, 계정에 접속할 수 있습니다.
http://oxtag.com/html/webftp/ftp.html
http://oxtag.com/php/webFtp/



기대 수명 계산기
http://oxtag.com/html/ex/health.html



모질라, 파이어폭스, FF 를 위한 웹표준화 가이드, 레퍼런스
http://www.mozilla.or.kr/docs/web-developer/standard/
http://developer.mozilla.org/en/docs/Gecko_DOM_Reference



PHP 메뉴얼 chm 한글 버전
http://kr2.php.net/get/php_manual_kr.chm/from/a/mirror



PHP로 만들어진 오픈형 채팅솔루션
http://phpopenchat.org/



실시간 메모 보내기, 실시간 쪽지 보내기
테스트 주소 :
                   팝   업 - http://oxtag.com/php/reChat/
                   레이어 - http://oxtag.com/php/reChat/index2.php
메모는 읽음과 동시에 자동 삭제처리 했습니다.
태그 : 접속자 아이피, 실시간 메모, 실시간 쪽지 보내기



브라우저 지원 글자 알아보기
http://oxtag.com/html/ex/len20070518.html



스누피 Snoopy HTTP 에뮬레이션, 소켓 연결
http://sourceforge.net/projects/snoopy



스크롤바, 투명스크롤바
http://oxtag.com/html/ex/scrollbar_color.html



색상표, 색상, 컬러, color
http://oxtag.com/html/rgbcolor.htm
http://oxtag.com/html/ex/colorcode/colorcode01.html



폰트 사이트
http://www.zellibbi.com/


무료 음악듣기 및 다운로드입니다.
네이버 블로그에 등록된 음악을 검색해서 들려줍니다.
검색 방법은 가수명 또는 제목 또는 가사를 입력하시면됩니다.

http://haco.tistory.com/2961

활용도는 약 0.001% 일지도 모릅니다.

이왕 온김에 홈피 광고도 하고 ㅎㅎ

http://www.mibany.com/ezbtn/

소스가 길어 좀 길어서 ....

일단 먼저 링크 페이지에 동작되는 샘플을 달았습니다.

테스트 해보셔도 개안을듯 합니다.

뭐 차후 구글처럼 Chart나 해봐야 할까나????

class EZBtn {
    //변환할 원본 파일
    var $Files = null;
    //이미지 정보
    var $Imgs = array();
    //변환할 이미지 정보
    var $Config = array();
    var $IsSave = false;
    var $UseUTF8 = false;

    //저장 이미지 경로
    var $Path = "Img";
    //변환 종류
    var $Mode = "4C";        //4C, 2W, 2H
    //적용 폰트
    var $UseFont = "Font/sandoldana_m.ttf";

    //원본에서 잘라 사용할 사이즈 (픽셀)
    var $CutSize = 8;

    //이미지 정보를 담습니다.
    function SetImg($Files) {
        $this->Files = $Files;
        $this->Imgs = array();
        if(is_array($Files)) foreach($Files as $No=>$Name) $this->Imgs[$No] = $this->GetImgInfo($Name);
        else $this->Imgs = $this->GetImgInfo($Files);
    }
    //이미지 정보를 구합니다.
    function GetImgInfo($FileName) {
        $ImgInfo['Name'] = $FileName;
        $ImgInfo['File'] = $this->GetNameExt($FileName);
        list($ImgInfo['Width'], $ImgInfo['Height'], $ImgInfo['Type'], $ImgInfo['Attr']) = getimagesize($FileName);
        return $ImgInfo;
    }
    //파일명와 확장자를 분리합니다.
    function GetNameExt($FileName) {
        preg_match('/(.*)\.([^\.]+)$/', $FileName, $Match);
        $File['name'] = $Match[1];
        $File['ext'] = strtolower($Match[2]);
        return $File;
    }
    //버턴을 생성합니다.
    function MakeBtnImg($Files, $Text='') {
        $this->SetImg($Files);
        $_func = sprintf("CreateButton_%s", $this->Mode);
        if(method_exists($this, $_func)) {
            if(is_array($this->Files)) {
                foreach($this->Imgs as $Img) {
                    $Im = $this->GetImg($Img);
                    if($Im) {
                        if($this->IsSave) $this->SaveImg($Img, $this->$_func($Img, $Im), 'result');
                        else $this->ImgView($Img, $this->$_func($Img, $Im));
                    }
                }
            }
            else {
                $Im = $this->GetImg($this->Imgs);
                if($Im) {
                    $SaveIm = $this->$_func($this->Imgs, $Im);
                    if($Text) $SaveIm = $this->SetText($SaveIm, $Text);
                    if($this->IsSave) $this->SaveImg($this->Imgs, $SaveIm, 'result');
                    else $this->ImgView($this->Imgs, $SaveIm);
                }
            }
        }
    }
    //16진수 color를 RGB형태로 변환한다.
    function HEX2RGB($Color) {
        $String = str_replace("#","",$Color);
        $RGB[] = hexdec(substr($String,0,2));        //red
        $RGB[] = hexdec(substr($String,2,2));        //green
        $RGB[] = hexdec(substr($String,4,2));        //blue
        return $RGB;
    }
    //버턴위에 글자를 입힙니다.
    function SetText($Im, $Text) {
        if($this->UseUTF8) $Text = iconv("EUC-KR", "UTF-8", $Text);
        $size = ($this->Config['FontSize'])?$this->Config['FontSize']:16;
        $top = ($this->Config['FontTop'])?$this->Config['FontTop']:25;
        $left = ($this->Config['FontLeft'])?$this->Config['FontLeft']:10;
        //기울기 각도
        $angle = ($this->Config['FontAngle'])?$this->Config['FontAngle']:0;
        $color = ($this->Config['FontColor'])?$this->HEX2RGB($this->Config['FontColor']):array(60, 60, 60);
        $TextColor = imagecolorallocate($Im, $color[0], $color[1], $color[2]);
        imagettftext($Im, $size, $angle, $left, $top, $TextColor, $this->UseFont, $Text);
        return $Im;
    }
    //버턴으로 만들 이미지를 생성합니다.
    function GetImg($Img) {
        if($Img['Type']<1 && $Img['Type'] > 3) return false;
        if($Img['Type']==1) $Im = imagecreatefromgif($Img['Name']);
        else if($Img['Type']==2) $Im = imagecreatefromjpeg($Img['Name']);
        else if($Img['Type']==3) $Im = imagecreatefrompng($Img['Name']);
        return $Im;
    }
    //원본 이미지 4개의 귀퉁이를 잘라 버턴으로 만듭니다.
    function CreateButton_4C($Img, $Im) {
        $Width = ($this->Config['BtnWidth'])?$this->Config['BtnWidth']:$Img['Width'];
        $Height = ($this->Config['BtnHeight'])?$this->Config['BtnHeight']:$Img['Height'];
        $SaveIm = imagecreatetruecolor($Width, $Height);

        $PosWidth = $Img['Width']-$this->CutSize;
        $PosHeight = $Img['Height']-$this->CutSize;
        $PosWidth2 = $Img['Width']-$this->CutSize*2;
        $PosHeight2 = $Img['Height']-$this->CutSize*2;

        $RePosWidth = $Width-$this->CutSize;
        $RePosHeight = $Height-$this->CutSize;
        $RePosWidth2 = $Width-$this->CutSize*2;
        $RePosHeight2 = $Height-$this->CutSize*2;

        //1
        imagecopy($SaveIm, $Im, 0, 0, 0, 0, $this->CutSize, $this->CutSize);
        //2
        imagecopy($SaveIm, $Im, $RePosWidth, 0, $PosWidth, 0, $this->CutSize, $this->CutSize);
        //3
        imagecopy($SaveIm, $Im, 0, $RePosHeight, 0, $PosHeight, $this->CutSize, $this->CutSize);
        //4
        imagecopy($SaveIm, $Im, $RePosWidth, $RePosHeight, $PosWidth, $PosHeight, $this->CutSize, $this->CutSize);
        //상단가운데
        imagecopyresampled($SaveIm, $Im, $this->CutSize, 0, $this->CutSize, 0, $RePosWidth2, $this->CutSize, $this->CutSize, $this->CutSize);
        //하단가운데
        imagecopyresampled($SaveIm, $Im, $this->CutSize, $RePosHeight, $this->CutSize, $PosHeight, $RePosWidth2, $this->CutSize, $this->CutSize, $this->CutSize);
        //왼쪽가운데
        imagecopyresampled($SaveIm, $Im, 0, $this->CutSize, 0, $this->CutSize, $this->CutSize, $RePosHeight2, $this->CutSize, $this->CutSize);
        //오른쪽가운데
        imagecopyresampled($SaveIm, $Im, $RePosWidth, $this->CutSize, $PosWidth, $this->CutSize, $this->CutSize, $RePosHeight2, $this->CutSize, $this->CutSize);
        //가운데
        imagecopyresampled($SaveIm, $Im, $this->CutSize, $this->CutSize, $this->CutSize, $this->CutSize, $RePosWidth2, $RePosHeight2, $this->CutSize, $this->CutSize);
        imagedestroy($Im);
        return $SaveIm ;
    }
    //원본 이미지 좌우양쪽을 잘라 버턴으로 만듭니다.
    function CreateButton_2W($Img, $Im) {
        $Width = ($this->Config['BtnWidth'])?$this->Config['BtnWidth']:$Img['Width'];
        $Height = $Img['Height'];
        $SaveIm = imagecreatetruecolor($Width, $Height);

        $PosWidth = $Img['Width']-$this->CutSize;
        $PosHeight = $Img['Height']-$this->CutSize;
        $PosWidth2 = $Img['Width']-$this->CutSize*2;
        $PosHeight2 = $Img['Height']-$this->CutSize*2;

        $RePosWidth = $Width-$this->CutSize;
        $RePosHeight = $Height-$this->CutSize;
        $RePosWidth2 = $Width-$this->CutSize*2;
        $RePosHeight2 = $Height-$this->CutSize*2;

        //왼쪽
        imagecopy($SaveIm, $Im, 0, 0, 0, 0, $this->CutSize, $Img['Height']);
        //오른쪽
        imagecopy($SaveIm, $Im, $RePosWidth, 0, $PosWidth, 0, $this->CutSize, $Img['Height']);
        //가운데
        imagecopyresampled($SaveIm, $Im, $this->CutSize, 0, $this->CutSize, 0, $RePosWidth2, $Img['Height'], $this->CutSize, $Img['Height']);
        imagedestroy($Im);
        return $SaveIm ;
    }
    //원본 이미지 상하양쪽을 잘라 버턴으로 만듭니다.
    function CreateButton_2H($Img, $Im) {
        $Width = $Img['Width'];
        $Height = ($this->Config['BtnHeight'])?$this->Config['BtnHeight']:$Img['Height'];
        $SaveIm = imagecreatetruecolor($Width, $Height);

        $PosWidth = $Img['Width']-$this->CutSize;
        $PosHeight = $Img['Height']-$this->CutSize;
        $PosWidth2 = $Img['Width']-$this->CutSize*2;
        $PosHeight2 = $Img['Height']-$this->CutSize*2;

        $RePosWidth = $Width-$this->CutSize;
        $RePosHeight = $Height-$this->CutSize;
        $RePosWidth2 = $Width-$this->CutSize*2;
        $RePosHeight2 = $Height-$this->CutSize*2;

        //상단
        imagecopy($SaveIm, $Im, 0, 0, 0, 0, $Img['Width'], $this->CutSize);
        //하단
        imagecopy($SaveIm, $Im, 0, $RePosHeight, 0, $PosHeight, $Img['Width'], $this->CutSize);
        //가운데
        imagecopyresampled($SaveIm, $Im, 0, $this->CutSize, 0, $this->CutSize, $Img['Width'], $RePosHeight2, $Img['Width'], $this->CutSize);
        imagedestroy($Im);
        return $SaveIm;
    }
    //만든 이미지를 저장합니다.
    function SaveImg($Img, $SaveIm, $Status) {
        $SaveFileName = sprintf("%s/%s_%s.%s", $this->Path, $Img['File']['name'], $Status, $Img['File']['ext']);
        if($Img['Type']==1) imagegif($SaveIm, $SaveFileName);
        else if($Img['Type']==2) imagejpeg($SaveIm, $SaveFileName, 100);
        else if($Img['Type']==3) imagepng($SaveIm, $SaveFileName);
        // 메모리에 있는 그림 삭제
        imagedestroy($SaveIm);
    }
    //resource 에 담긴 이미지를 봅니다.
    function ImgView($Img, $SaveIm) {
        if($Img['Type']==1) imagegif($SaveIm);
        else if($Img['Type']==2) imagejpeg($SaveIm, 100);
        else if($Img['Type']==3) imagepng($SaveIm);
        // 메모리에 있는 그림 삭제
        imagedestroy($SaveIm);
    }
    //저장된 이미지를 봅니다.
    function SaveImgView($FileName) {
        $NameExt = $this->GetNameExt($FileName);
        $FileSize = filesize($FileName);
        if(eregi("(MSIE 5.5|MSIE 6.0|MSIE 7.0)", $_SERVER['HTTP_USER_AGENT'])) { // 브라우져 구분
            Header("Content-Transfer-Encoding: binary");
        } else {
            Header("Content-Description: PHP3 Generated Data");
        }
        Header(sprintf("Content-Type: %s", $NameExt['ext']));
        Header(sprintf("Content-Disposition: attachment; filename=%s", $FileName));
        Header(sprintf("Content-Length: %s", $FileSize));
        Header("Pragma: no-cache");
        Header("Expires: 0");
        $fp = fopen($FileName, "r");
        if(!fpassthru($fp)) fclose($fp);
    }
}


http://davidwalsh.name/javascript-shorthand-if-else-examples
-------------------------------------------------------
Basic True / False Declaration
$is_admin = ($user['permissions'] == 'admin' ? true : false);
-------------------------------------------------------
Conditional Welcome Message
echo 'Welcome '.($user['is_logged_in'] ? $user['first_name'] : 'Guest').'!';
-------------------------------------------------------
Conditional Items Message
echo 'Your cart contains '.$num_items.' item'.($num_items != 1 ? 's' : '').'.';
-------------------------------------------------------
Conditional Error Reporting Level
error_reporting($WEBSITE_IS_LIVE ? 0 : E_STRICT);
-------------------------------------------------------
Conditional Basepath
echo '<base href="http'.($PAGE_IS_SECURE ? 's' : '').'://mydomain.com" />';
-------------------------------------------------------
Nested PHP Shorthand
echo 'Your score is:  '.($score > 10 ? ($age > 10 ? 'Average' : 'Exceptional') : ($age > 10 ? 'Horrible' : 'Average') );
-------------------------------------------------------
Leap Year Check
$is_leap_year = ((($year % 4) == 0) && ((($year % 100) != 0) || (($year %400) == 0)));
-------------------------------------------------------
Conditional PHP Redirect
header('Location: '.($valid_login ? '/members/index.php' : 'login.php?errors=1')); exit();
-------------------------------------------------------

DB 억세스가 많은 인덱스화일을 html로 저장했다가 보여주는 방식의 인덱스화일 캐쉬는 팁텍에서도 여러번 거론 되었던 방법이고 스쿨에서도 이미 사용하고 있는 방법입니다만...

비록 뒷북일지라도...

--------------------------------------------------------------------------------------------------------

function make_cache($file,$script,$duration=60) {
    $limit=time()-$duration*60;
    if(!file_exists($file) || filemtime($file)<$limit) {
        $command="wget --user-agent=\"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) \" http://".$_SERVER["HTTP_HOST"].$script." -O ".$file;
        exec($command);
    }
    if(file_exists($file))  @include $file;
}

function new_cache($file,$script) {
        $command="wget --user-agent=\"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) \" http://".$_SERVER["HTTP_HOST"].$script." -O ".$file;
        exec($command);
}

--------------------------------------------------------------------------------------------------------

크론을 돌리지 않고도 인덱스화일을 통채로 저장하는 것보다는 몇조각으로 나눠서 저장하는 방법을 사용하고 있습니다.

사용법은
<? include "head.php"; ?>
<tr>
<td width=545 valign=top>
<table valign=top cellpadding=0 cellspacing=0 border=0 width=100%>
<?
$inc=$_SERVER[DOCUMENT_ROOT]."/layout/cache/center.html";
$script="/layout/center.inc" ;
make_cache($inc,$script,5);
?>
</table></td>
<td width=8></td>
<td width=245 valign=top><table valign=top cellpadding=0 cellspacing=0 border=0>
<?
$inc=$_SERVER[DOCUMENT_ROOT]."/layout/cache/right.html";
$script="/layout/right.inc" ;
make_cache($inc,$script,10);
?>
</table></td></tr>
<? include "foot.inc"; ?>

페이지를 몇개로 분할한 다음 각부분을 별도로 캐쉬할 수 있습니다.
시간은 분단위입니다.
하지만 스쿨처럼 글을 쓰고 나서도 초기화면에 나타나지않으면 일종의 불안감을 조성하는 경향이 있어서
글이나 댓글을 입력하는 부분에

$inc=$_SERVER[DOCUMENT_ROOT]."/banner/cache/body.html";
$script="/body.inc" ;
new_cache($inc,$script);

를 추가해주면 즉시 반영이 됩니다.


if(file_exists($file))  @include $file; 부분을
if(file_exists($file))  return file_get_contents($file); 했더니 HTML코드를 소스채 뿌려버리는군요.


include 하는쪽을 캐쉬하는데 변수에따라 달라지는 부분 이라면?
<?echo "<? if(\$member[level]==1) {?> 어쩌구 저쩌구 <? } ?>";?>
하면 php 스크립트까지 만들어집니다

회원부분과 비회원부분을 따로 캐쉬하는 방법도 있습니다.
<?
if($member[level]>7) {
$inc="/home/http/htdocs/neofinetia/layout/hit/out_member.html";
$script="/layout/today_out_member.php" ;
} else {
$inc="/home/http/htdocs/neofinetia/layout/hit/member.html";
$script="/layout/today_in_member.php" ;
}
@make_cache($inc,$script,60);
?>

출처:http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=58151&page=1

출력을 버퍼링하는 ob_start()에 대해서 팁텍에서도 여러번 논의가 있었던 것으로 기억합니다.
특히 ob_start("ob_gzhandler");
를 이용하면 테이터를 gzip 압축을 해서 훨씬 빨라질거라는 이야기도 있었고...

저역시 ob_start("ob_gzhandler"); 해주고 압축이 잘되고 있다고 믿어왔습니다.

근데 우연히 http://www.whatsmyip.org/mod_gzip_test/ 에서 테스트를 해보니까 압축이 안되어있다고 나오더군요.
한참을 뒤지다가 Apache/1 에서는 별도로 mod_gzip을 설정해야한다는 사실을 알았습니다.


화일을 다운로드하고 설정하는 방법은 http://schroepl.net/projekte/mod_gzip/install.htm 에 자세히 나와있습니다.
소스를 다운 받아서 압축을 풀고
make
make install 하면 됩니다.

make중 에러가 난다면 Makefile 화일을 열어서
APXS=your_apxs_pathname 부분을 수정해주셔야합니다.

설치가 되면
php.ini 화일에
LoadModule gzip_module          libexec/mod_gzip.so

AddModule mod_gzip.c

 <IfModule mod_gzip.c>
  mod_gzip_on                  Yes
  mod_gzip_can_negotiate        Yes
  mod_gzip_static_suffix        .gz
  AddEncoding              gzip .gz
  mod_gzip_update_static        No
  mod_gzip_command_version      '/mod_gzip_status'
  mod_gzip_keep_workfiles      No
  mod_gzip_minimum_file_size    500
  mod_gzip_maximum_file_size    500000
  mod_gzip_maximum_inmem_size  60000
  mod_gzip_min_http            1000
  mod_gzip_handle_methods        GET POST
  mod_gzip_item_exclude        reqheader  "User-agent: Mozilla/4.0[678]"
  mod_gzip_item_include        file      \.html$
  mod_gzip_item_exclude        file      \.js$
  mod_gzip_item_exclude        file      \.css$
  mod_gzip_item_include        file      \.pl$
  mod_gzip_item_include        handler    ^cgi-script$
  mod_gzip_item_include        mime      ^text/html$
  mod_gzip_item_include        mime      ^text/plain$
  mod_gzip_item_include        mime      ^httpd/unix-directory$
  mod_gzip_dechunk              Yes
  LogFormat                    "%h %l %u %t \"%V %r\" %<s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n -< Out:%{mod_gzip_output_size}n = %{mod_gzip_compression_ratio}n pct." common_with_mod_gzip_info2
  CustomLog                    logs/mod_gzip.log common_with_mod_gzip_info2
  mod_gzip_add_header_count    Yes
  mod_gzip_send_vary            On
  </IfModule>

를 추가해줍니다.

아파치를 재가동하고
http://www.whatsmyip.org/mod_gzip_test/ 에서 다시 테스트를 해보니 드디어 제대로 압축이 된 것을 확인할 수 있었습니다.
apache 1.x 에서는 mod_gzip이 설정되고 페이지에 ob_start("ob_gzhandler"); 가 있어야 압축이 됩니다.
ob_start("ob_gzhandler");가 들어있지 않은 페이지는 압축이 일어나지 않습니다.


apache 2.x에서는
ob_start("ob_gzhandler");를 하면 페이지가 먹통이 됩니다.

아파치 2.x에서는 mod_deflate를 설정해주셔야합니다.
송효진님이 이미 한번 언급을 하셨더군요.

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=56751&sca=&sfl=wr_subject%7C%7Cwr_content&stx=mod_deflate&sop=and

송효진님처럼

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript text/css
하셔도 되고

<Location />
  <IfModule mod_deflate.c>
        SetOutputFilter DEFLATE
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4.0[678] no-gzip
        BrowserMatch bMSIE !no-gzip !gzip-only-text/html
        SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|gz|tar|exe)$ no-gz
  <IfModule mod_headers.c>
        Header append Vary User-Agent env=!dont-vary
  </IfModule>
  </IfModule>
</Location>

하셔도 됩니다.
2.x에서는 ob_start("ob_gzhandler"); 와 상관없이 모든 페이지에서 작동합니다.

apache 1.x에서 mod_gzip만 사용해도 압축할 수 있습니다. 설정파일에서 mod_gzip_item_include mime ^application/x-httpd-php만 지정하면 모든 php 파일이 압축되어 전달됩니다. 물론 다른 유형의 파일도 지정할 수 있습니다.