urlencode urldecode

렛츠웹 + 게임/My Tip 2009. 1. 5. 16:57

//urlencode
function URLEncode(txt)
{
 // The Javascript escape and unescape functions do not correspond
 // with what browsers actually do...
 var SAFECHARS = "0123456789" +     // Numeric
     "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic
     "abcdefghijklmnopqrstuvwxyz" +
     "-_.!~*"()";     // RFC2396 Mark characters
 var HEX = "0123456789ABCDEF";

 var plaintext = txt;
 var encoded = "";
 for (var i = 0; i < plaintext.length; i++ ) {
  var ch = plaintext.charAt(i);
     if (ch == " ") {
      encoded += "+";    // x-www-urlencoded, rather than %20
  } else if (SAFECHARS.indexOf(ch) != -1) {
      encoded += ch;
  } else {
      var charCode = ch.charCodeAt(0);
   if (charCode > 255) {
       alert( "Unicode Character ""
                        + ch
                        + "" cannot be encoded using standard URL encoding.n" +
              "(URL encoding only supports 8-bit characters.)n" +
        "A space (+) will be substituted." );
    encoded += "+";
   } else {
    encoded += "%";
    encoded += HEX.charAt((charCode >> 4) & 0xF);
    encoded += HEX.charAt(charCode & 0xF);
   }
  }
 } // for

 return encoded;
};

function URLDecode(txt)
{
   // Replace + with " "
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef";
   var encoded = txt;
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
    if (ch == "+") {
        plaintext += " ";
     i++;
    } else if (ch == "%") {
   if (i < (encoded.length-2)
     && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1
     && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
    plaintext += unescape( encoded.substr(i,3) );
    i += 3;
   } else {
    alert( "Bad escape combination near ..." + encoded.substr(i) );
    plaintext += "%[ERROR]";
    i++;
   }
  } else {
     plaintext += ch;
     i++;
  }
 } // while
   return plaintext;
};


posted by 망차니

설정

트랙백

댓글

위로 스크롤 되는 배너

렛츠웹 + 게임/My Tip 2009. 1. 5. 16:56

<!---------------------main_top_text_header.js------------------->

var topTextBanners = [['http://www.gmarket.co.kr/challenge/neo_sangsul/plan_display.asp?sid=32387&pos_shop_cd=EC&pos_class_cd=900000006&pos_class_kind=T','아이비&황보가 떴다!->','ico_event.gif']
,['http://www.gmarket.co.kr/challenge/neo_sangsul/plan_display.asp?sid=29571&pos_class_cd=900000011&pos_class_kind=T','[1+1]아동구두 7,500원!','ico_sale.gif']
,['http://www.gmarket.co.kr/challenge/neo_sangsul/plan_display.asp?sid=32401&pos_class_cd=900000011&pos_class_kind=T','원하시면 만들어드립니다!','ico_special.gif']
,['http://event.gmarket.co.kr/html/200704/070407_hanacard/070407_hanacard.asp?pos_shop_cd=EC&pos_class_cd=900000013&pos_class_kind=T','무료배송체험현장go->','ico_best.gif']
,['http://www.gmarket.co.kr/challenge/neo_category/large_category_gen_100000048.asp?pos_shop_cd=EC&pos_class_cd=900000014&pos_class_kind=T','G-온라인미용실OPEN','ico_hot.gif']
,];

var iScrollerHeight = 20;  // 스크롤러의 세로
var iTotalArea = 0;
var bWait = true;
var bMouseOver = false;
var iScrollSpeed = 1;   // Scrolling 속도
var iWaitTime = 4000;   // 멈추는 시간
var iTemp = 0;
var iMovingAmount = 20;
var arrScrollContent = new Array();
var i;

function startscroll()    // 스크롤 시작
{
 for (i = 0; i < arrScrollContent.length; i++)
 {
  insert_area(iTotalArea, iTotalArea++); // area 삽입
 }
 
 window.setTimeout("scrolling()", iWaitTime);
}

function scrolling()    // 실제로 스크롤 하는 부분
{
 if (!bMouseOver && bWait)
 {
  for (i = 0; i < iTotalArea; i++)
  {
   tmp = document.getElementById('scroll_area' + i).style;
   tmp.top = parseInt(tmp.top) - iScrollSpeed;

   if (parseInt(tmp.top) <= -iScrollerHeight)
   {
    tmp.top = iScrollerHeight * (iTotalArea - 1);
   }

   if (iTemp++ == ((iMovingAmount - 1) * arrScrollContent.length + 1))
   {
    bWait = false;
    window.setTimeout("bWait=true; iTemp=0;", iWaitTime);
   }
  }
 }

 window.setTimeout("scrolling()", 0);
}

function next_scrolling()    // 실제로 스크롤 하는 부분
{
 for (i = 0; i < iTotalArea; i++)
 {
  tmp = document.getElementById('scroll_area' + i).style;
  tmp.top = parseInt(tmp.top) - iScrollerHeight;

  if (parseInt(tmp.top) <= -iScrollerHeight)
  {
   tmp.top = iScrollerHeight * (iTotalArea - 1);
  }
 }
}

function insert_area(idx, n)
{
 var strContent
 strContent = '<div style="left: 0px; width: 179px; height: 20px; position: absolute; top: ' + (iScrollerHeight * n) + 'px" id="scroll_area' + n + '">';
 strContent += arrScrollContent[idx];
 strContent += '</div>';
 document.write(strContent);
}

function checkMouseOver()
{
 var count
 
 count = 0
 for (i = 0; i < iTotalArea; i++)
 {
  tmp = document.getElementById('scroll_area' + i).style;
  
  if (parseInt(tmp.top) % iScrollerHeight != 0)
   count++;
 }
 
 if(count == 0)
  bMouseOver = true;
}

for(i=0; i<5; i++)
{
 arrScrollContent[i] = "<table cellSpacing='0' cellPadding='0' width='100%' border='0'><tr><td width='39' align='center'><img src='http://image.gmarket.co.kr/challenge/neo_image/newmain5/" + topTextBanners[i][2] + "' width='35' height='11'></td><td width='140' class='texttopAD'><font color='#000000'><a href='" + topTextBanners[i][0] + "'>" + topTextBanners[i][1] + "</a></font></td></tr></table>";
}
<!-- Be Generated Successfully -->
<!--2007-04-12 19:10:00-->

<!---------------------main_top_text_header.js------------------->

<!---------------------실행------------------->

<script src=main_top_text_header.js></script>

<span style="left:0px;width:225px;position:relative;height:195px;top:3px">
 <div style="left:0px;width:225px;clip: rect(0px 225px 195px 0px);position:absolute;top:0px;height:195px" onMouseover="javascript:checkMouseOver();" onMouseout="bMouseOver=false;">
  <script language="javascript">startscroll();</script>
 </div>
</span>


posted by 망차니

설정

트랙백

댓글

innerhtml 을 이용해서 원하는 곳에 tr과 td를 삽입하는 방법

렛츠웹 + 게임/My Tip 2009. 1. 5. 16:55
<script>
var selectedIdx = -1;
var tblRowLimit    = 10; //10개 행만 지원 합니다.

//테이블의 맨 마지막에 새 행을 추가합니다.
function insertNewRow(cellHtml)
{

    var oCell    = new Array();

    if(cellHtml.length ==0){
        return void(alertFocus("입력할 내용이 없습니다",document.frmData.cellHtml));

    }
    if(tblNews.rows.length >= tblRowLimit){
        return void(alertFocus("10개 이상은 입력 하실수 없습니다.",document.frmData.cellHtml));
    }

    //새 행 추가
    var gRows  = tblNews.insertRow();
    gRows.onmousedown = function(){selectRow(this)}
    gRows.onmouseover = function(){tblMouseOver(this)}
    gRows.onmouseout = function(){tblMouseOut(this)}
    //새 셀(td)추가
    oCell[0]    = gRows.insertCell();
    
    //각셀의 값 입력
    oCell[0].innerHTML = cellHtml;

    //추가된 셀 선택
    selectRow(gRows) ;
    
}

//cell HTML 업데이트
function updateTblRow()
{
    if(selectedIdx != -1){
        if(document.frmData.cellHtml.value.length ==0){
            alertFocus("수정할 내용이 없습니다",document.frmData.cellHtml);
        }else{
            tblNews.rows[selectedIdx].cells[0].innerHTML=document.frmData.cellHtml.value;
        }
    }
}


//위로!
function upRow()
{
    if(selectedIdx == -1) alert("선택두 안하셨구마~");
    else if(selectedIdx == 0) alert("이미 맨위구마~ ㅡㅡ;;");
    else{
        
        var thisCell    = tblNews.rows[selectedIdx].cells[0];
        var distCell    = tblNews.rows[selectedIdx -1].cells[0];
        var tmp    = distCell.innerHTML;

        distCell.innerHTML = thisCell.innerHTML;
        thisCell.innerHTML = tmp;
        selectRow(tblNews.rows[selectedIdx -1]);
    }
}


//아래로!
function downRow()
{
    if(selectedIdx == -1) alert("선택두 안하셨구마~");
    else if(selectedIdx + 1 >= tblNews.rows.length) alert("이미 맨 아래 구마~ ㅡㅡ;;");
    else{
        
        var thisCell    = tblNews.rows[selectedIdx].cells[0];
        var distCell    = tblNews.rows[selectedIdx +1].cells[0];
        var tmp    = distCell.innerHTML;

        distCell.innerHTML = thisCell.innerHTML;
        thisCell.innerHTML = tmp;
        selectRow(tblNews.rows[selectedIdx +1]);
    }
}

//삭제
function clearRow()
{
    tblNews.deleteRow(selectedIdx);
    selectedIdx = -1;
}

//해당 row( or cell) 클릭시 작동
function selectRow(tblRow)
{
    var f = document.frmData;
    if(selectedIdx != tblRow.rowIndex){ //선택
        if(selectedIdx != -1 ){
            tblNews.rows[selectedIdx].cells[0].style.backgroundColor="white";
        }

        f.cellHtml.value = tblRow.cells[0].innerHTML;
        tblRow.cells[0].style.backgroundColor="#CCFFCC";
        selectedIdx = tblRow.rowIndex;
        tblEventInit();
    }else{                                            //선택해제
        selectedIdx = -1;
        tblRow.cells[0].style.backgroundColor="white";
        document.frmData.cellHtml.value="";
    }
    
}

function tblMouseOver(tblRow){
    if(tblRow.rowIndex != selectedIdx){
        tblRow.cells[0].style.backgroundColor="silver";
    }
}

function tblMouseOut(tblRow){

    if(tblRow.rowIndex != selectedIdx){
        tblRow.cells[0].style.backgroundColor="white";
    }
}

function tblEventInit()
{
    //셀 이벤트 초기화
    var len = tblNews.rows.length;
    for(var i = 0 ; i < len ; i++){
        tblNews.rows[i].onmousedown = function(){selectRow(this)}
        tblNews.rows[i].onmouseover = function(){tblMouseOver(this)}
        tblNews.rows[i].onmouseout = function(){tblMouseOut(this)}

    }
}

function init()
{
    tblEventInit();//셀 이벤트 초기화
}

function printDate(t)
{
    var txt = document.all[t.name + "Text"];
    var time = t.value;
//    alert(time);
    if(time.length>0){
        txt.innerHTML = time.substring(0,4) + "년";
    }

    if(time.length>4){
        txt.innerHTML += " " +  time.substring(4,6) + "월";
        if( time.substring(0,4) > 2300 ||  time.substring(0,4) < 1800){
                txt.innerHTML = "<font color=red>1800~2300년 사이로 넣어주세요.</font>";
                return "";
        }
    }

    if(time.length>6){
        txt.innerHTML += " " + time.substring(6,8) + "일";
        if( time.substring(4,6) > 12 ||  time.substring(0,4) < 1){
                txt.innerHTML = "<font color=red>01~12월 사이로 입력해주세요.</font>";
                return "";
        }
    }

    if(time.length>8){
        txt.innerHTML += " " + time.substring(8,10) + "시";
        if( time.substring(6,8) > 31 ){
                txt.innerHTML = "<font color=red>1~31일 사이로 입력해주세요</font>";
                return "";
        }
    }

    if(time.length>10){
        txt.innerHTML += " " + time.substring(10,12) + "분";
        if( time.substring(8,10) > 23){
                txt.innerHTML = "<font color=red>0시~23시 사이로 입력해주세요</font>";
                return "";
        }
    }

        if( time.length ==12 && time.substring(10,12) > 59  ){
                txt.innerHTML = "<font color=red>0분~59분 사이로 입력해주세요</font>";
                return "";
        }


    return true;
}

function check(mode)
{
    var newsText
    var f = document.frmData;
    
    if(tblNews.rows.length < 1) alert("작성된 뉴스가 없습니다");
    else if(!f.title.value)void(alertFocus("제목을 입력해주세요. 각 뉴스 셋을 구분하는 이름으로 사용됩니다.",f.title));
    else if(f.sdTime.value.length != 12)void(alertFocus("게시 시작 일시의 형식이 잘못되었습니다",f.sdTime));
    else if(f.edTime.value.length != 12)void(alertFocus("게시 종료 일시의 형식이 잘못되었습니다",f.edTime));
    else if(f.edTime.value < f.sdTime.value)void(alertFocus("게시 종료 일시는 시작일시보다 과거가 될수없습니다",f.edTime));
    else{

        for(var i = 0 ; i < tblRowLimit ; i ++){ //히든폼에 데이터 세팅
            newsText = f["newsTxt" + (i + 1) ];
            if(tblNews.rows[i]){
                newsText.value = tblNews.rows[i].cells[0].innerHTML;
            }else{
                newsText.value = "";
            }
        }

        f.mode.value=mode;
        f.action    = "Action.asp";
        f.target    =  "frmAction";
        f.submit();
    }
}

//alert 후 focus 이동후 false return;
function alertFocus(alertMsg,focusForm)
{
    alert(alertMsg);
    focusForm.focus();
    return false;
}
//키보드 입력시 숫자 이외의 키를 누를 경우 false 를 리턴한다.
function isNum(e){
    //alert(event.keyCode);
    if ((event.keyCode >= 45 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8|| event.keyCode==13 || event.keyCode==9)     return true;
    else return false;

}
</script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red" onLoad=init()>
테이블 셀 innerHTML 컨트롤 예제
<form name=frmData onSubmit="return false" method="post">
    <input type=hidden name="mode" value="">
    <input type=hidden name="no" value="">
    <input type=hidden name="newsTxt1" value="">
    <input type=hidden name="newsTxt2" value="">
    <input type=hidden name="newsTxt3" value="">
    <input type=hidden name="newsTxt4" value="">
    <input type=hidden name="newsTxt5" value="">
    <input type=hidden name="newsTxt6" value="">
    <input type=hidden name="newsTxt7" value="">
    <input type=hidden name="newsTxt8" value="">
    <input type=hidden name="newsTxt9" value="">
    <input type=hidden name="newsTxt10" value="">

<table border="1" width="700" align="center" cellspacing="0" bordercolordark="white" bordercolorlight="black">
    <tr>
        <td width="196" valign="bottom">
            <table border="0" cellspacing="0" cellpadding="0" width="180" align=center id="tblNews" style="border-width:1px; border-style:dotted;">
                <tr>
                    <td ><img src="http://ulgom.net/image/logobysong.gif" ></td>
                </tr>
            </table>
            <p></p>
            <input type=button name=btnSave value="수정사항저장" onClick="check("edit")">
            <input type=button name=btnSave value="새이름으로 저장"  onClick="check("new")">
        </td>
        <td width="44" >
            <input type="button" value="↑↑" onClick="upRow()"><br><br>
            <input type="button" value="↓↓" onClick="downRow()"><br><br>
            <input type="button" value="삭제" onClick="clearRow()">
        </td>
        <td width="438" >
            제목 : <input type=text name=title value="" size="46">
            <br>시작일시 : <input type=text name=sdTime maxlength=12 size=12 value="" onKeyDown="return isNum(event)" onKeyUp="return printDate(this)">
            <font  id="sdTimeText" ></font>
            <br>종료일시 : <input type=text name=edTime maxlength=12 size=12 value="" onKeyDown="return isNum(event)" onKeyUp="return printDate(this)">
            <font id="edTimeText"></font>
            <br><font color=red>날짜는 분단위 까지 숫자로만 입력합니다
            <br>(예 : 2005년 1월 1일 오후 2시 5분 : 200501011405</font>
            <textarea name=cellHtml rows="7" cols="44"></textarea><br>
            <input type=button value="수정" name=btnSave onClick="updateTblRow()" ><input type=button value="추가" name=btnNew onClick="insertNewRow(this.form.cellHtml.value)">
        </td>
    </tr>
</form>
</table>
<center>
<!--- newsList 용 iframe --->
<iframe name=frmNewsList  width=680 height=300 frameborder=0></iframe>
<!--- newsList 용 iframe --->
</center>
</body>
<!----DB 컨넥션용 Target Iframe--->
<iframe name="frmAction"  width=0 height=0></iframe>
<!----DB 컨넥션용 Target Iframe--->
</html>

'렛츠웹 + 게임 > My Tip' 카테고리의 다른 글

urlencode urldecode  (0) 2009.01.05
위로 스크롤 되는 배너  (0) 2009.01.05
linux 파일 검색,치환등  (0) 2009.01.05
사운드제어  (0) 2009.01.05
엑셀로다운받기  (0) 2009.01.05
posted by 망차니

설정

트랙백

댓글

linux 파일 검색,치환등

렛츠웹 + 게임/My Tip 2009. 1. 5. 16:54
문자열찾기 방법 1 - 영어만 주로 가능
grep -rw "찾는문자열" ./

문자열찾기 방법 2 - 대/소문자 구분 안하고 검색
grep -i -l "찾는문자열" * -r 2> /dev/null

문자열찾기 방법 3 - 한글, 영어 모두 가능
find . -exec grep -l "찾는문자열" {} ; 2>/dev/null

문자열찾기 방법 4 - 한글,영어, 대소문자 안가리고 검색
find . -exec grep -i -l "찾을문자열" {} ; 2>/dev/null

문자열찾은 후 치환
find . -exec perl -pi -e "s/찾을문자열/바꿀문자열/g" {} ; 2>/dev/null
;->앞에 역슬러시 넣을것
파일명 찾기
find / -name 파일명 -type f

파일명 찾기(대소문자 구별없음)
find / -iname 파일명 -type f

디렉토리 찾기
find / -name 파일명 -type d

디렉토리 찾기(대소문자 구별없음)

find / -iname 파일명 -type d


posted by 망차니

설정

트랙백

댓글

사운드제어

렛츠웹 + 게임/My Tip 2009. 1. 5. 16:54
<!---------------------------------프레임부분----------------------------------->
<frameset rows='0, 1*' framespacing=0 frameborder=0>
	<frame src='music_play.php' name='main_top' target_frame='main' marginwidth=0 marginheight=0 noresize scrolling=no>
	<frame src='content.php?db=index' name='main' target_frame='_self' marginwidth=10 marginheight=10 noresize>
    <body bgcolor='white' text='black' link='blue' vlink='purple' alink='red'>
    <p>이 페이지를 보려면, 프레임을 볼 수 있는 브라우저가 필요합니다.</p>
    </body>
    </noframes>
</frameset>




<!-----------------------------music_play.php시작---------------------------------->
<html>
<head>
<title>juck box</title>
<script language="JavaScript"> 


var music1="music1.mp3";
var m_tm1 =285000; 
var music2="music2.mp3"; 
var m_tm2 =226000;
var music3="music3.mp3"; 
var m_tm3 =254000;

var tot_num = 3;                               // 총갯수
var cur_music=1;                               // 시작음악
var st = 0;                                        //타이머 상태
function music_play(){
   document.player.Stop();                 //플레이어 스탑 
   if(st==1){                                     //타이머 스탑
      clearTimeout(time_id);
	  st=0;
   }
   kkk =  eval("music"+cur_music);        //플레이
   document.player.Open(kkk);
   du = eval("m_tm"+cur_music);
   cur_music++;                                //다음 음악선택
   if(cur_music> tot_num){
      cur_music =1;
   }
   st=1;
   //time_id=setTimeout("music_play()", du);   //타이머 세팅
}

</script> 
</head>

<body>
<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" width="1" height="1" vspace="1" hspace="1" align="middle" id="player" style="left:0px; top:0px;">
<param name="AllowScan" value="true">
<param name="AudioStream" value="-1">
<param name="AutoRewind" value="false">
<param name="AutoStart" value="true">
</object>



</body>
</html> 
<!----------------------------------------music_play.php끝--------------------------------->




<!--------------------------------해당 본페이지 조절 박스부위 시작----------------------------->
<script>
function music_playing(mode)
{
	if(mode=='sound_off'){
		top.main_top.document.player.mute=true;
	}
	else if(mode=='sound_on'){
		top.main_top.document.player.mute=false;
	}
	else if(mode=='music_pause'){
		if(top.main_top.document.player.PlayState==2){
			top.main_top.document.player.Pause();//1
		}
	}
	else if(mode=='music_stop'){
		top.main_top.document.player.Stop();//0
	}
	else if(mode=='music_play'){
		top.main_top.document.player.Play();//2
	}
	
}
</script> 
<!----------------------------------------해당 본페이지 조절 박스부위 끝------------------------------->

posted by 망차니

설정

트랙백

댓글