2015. 4. 20. 11:22 IT/PHP

PHP XSS filter function

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

출처 : http://kallahar.com/smallprojects/php_xss_filter_function.php


function RemoveXSS($val) { 
   // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed 
   // this prevents some character re-spacing such as <java\0script> 
   
// note that you have to handle splits with \n, \r, and \t later since they *are* 
   // allowed in some inputs
 
   $val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/''', $val); 
    
   // straight replacements, the user should never need these since they're normal characters 
   
// this prevents like <IMG SRC=&#X40&#X61&#X76&#X61&#X73&#X63&#X72&#X69&#X70&#X74&
   // #X3A&#X61&#X6C&#X65&#X72&#X74&#X28&#X27&#X58&#X53&#X53&#X27&#X29>
 
   $search = 'abcdefghijklmnopqrstuvwxyz'
   $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
   $search .= '1234567890!@#$%^&*()'
   $search .= '~`";:?+/={}[]-_|\'\\'
   for ($i = 0; $i < strlen($search); $i++) { 
   // ;? matches the ;, which is optional 
   // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars 
    
   // &#x0040 @ search for the hex values 
      $val = preg_replace('/(&#[x|X]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); 
      // with a ; 

      // &#00064 @ 0{0,7} matches '0' zero to seven times 
      $val = preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ; 
   } 
    
   // now the only remaining whitespace attacks are \t, \n, and \r 
   $ra1 = Array('javascript''vbscript''expression''applet''meta''xml''blink''link''style'
'script''embed''object''iframe''frame''frameset''ilayer''layer''bgsound''title''base'); 
   $ra2 = Array('onabort''onactivate''onafterprint''onafterupdate''onbeforeactivate''onbeforecopy''onbeforecut''onbeforedeactivate','onbeforeeditfocus''onbeforepaste''onbeforeprint''onbeforeunload''onbeforeupdate''onblur''onbounce''oncellchange''onchange','onclick''oncontextmenu''oncontrolselect''oncopy''oncut''ondataavailable''ondatasetchanged''ondatasetcomplete''ondblclick','ondeactivate''ondrag''ondragend''ondragenter''ondragleave''ondragover''ondragstart''ondrop''onerror''onerrorupdate','onfilterchange''onfinish''onfocus''onfocusin''onfocusout''onhelp''onkeydown''onkeypress''onkeyup''onlayoutcomplete''onload','onlosecapture''onmousedown''onmouseenter''onmouseleave''onmousemove''onmouseout''onmouseover''onmouseup','onmousewheel''onmove''onmoveend''onmovestart''onpaste''onpropertychange''onreadystatechange''onreset''onresize','onresizeend''onresizestart''onrowenter''onrowexit''onrowsdelete''onrowsinserted''onscroll''onselect''onselectionchange','onselectstart''onstart''onstop''onsubmit''onunload'); 
   $ra = array_merge($ra1, $ra2); 
    
   $found = true; // keep replacing as long as the previous round replaced something 
   while ($found == true) { 
      $val_before = $val; 
      for ($i = 0; $i < sizeof($ra); $i++) { 
         $pattern = '/'
         for ($j = 0; $j < strlen($ra[$i]); $j++) { 
            if ($j > 0) { 
               $pattern .= '('
               $pattern .= '(&#[x|X]0{0,8}([9][a][b]);?)?'
               $pattern .= '|(&#0{0,8}([9][10][13]);?)?'
               $pattern .= ')?'
            } 
            $pattern .= $ra[$i][$j]; 
         } 
         $pattern .= '/i'
         $replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2); // add in <> to nerf the tag 
         $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags 
         if ($val_before == $val) { 
            // no replacements were made, so exit the loop 
            $found = false; 
         } 
      } 
   } 
   return $val; 

Posted by 당양부부34

2015. 4. 16. 13:46 IT/jquery_javascript

jquery ajax

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
$.ajax({
      url: "ajax_abc_list.php",
      type: "POST",
      data: {m_level:m_level},
      dataType: "html",
      success: function(data){
          $("#divLvl").html(data);
      },
      error: function (err) {
                alert('에러가 발생하였습니다.');
            }
  });

 

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

jQuery 1.7이후 .bind(), .live(), .delegate()가 .on()으로 통합
개요
.bind(), .live(), .delegate(), .on()은 이벤트에 관련된 기능으로, 먼저 각각의 기능들을 살펴보는 것이 순서인것 같아 먼저 기능들을 살펴본다.

.bind()는 가장 많이 쓰는 이벤트 설정 함수이다. DOM이 로드된 후 추가된 element들에 대해서 event handler를 처리할 수 없고, .live(), .delegate()는 나중에 추가된 element들의 이벤트들을 처리할 수 있다.

foo에 이벤트를 설정하고 싶다면 아래와 같이 사용된다.
$(".foo").bind("click", handler);
$(".foo").on("click", handler);


.delegate()는 이벤트 설정을 부모에 대해 한다. 이런 방식을 이벤트 대리자라고 명명한다.

 .foo에 이벤트를 설정하면 다음과 같이 사용된다.
$("#container").delegate(".foo", "click", handler);
$("#container").on("click", ".foo", handler);


.live()는 이벤트의 설정 대상이 document가 된다.

foo에 이벤트를 설정하고 싶다면 아래와 같이 사용된다.
$(".foo").live("click", handler);
$(document).on("click", ".foo", handler);

 

.on()을 사용해야 하는 이유
1. .on()으로 통합 될 예정

.live()와 .die()는 jQuery 1.9에서 빠졌고(1.7 Deprecations), .delegate()도 향후 없어질 예정이어서 .on을 사용하는 습관을 가지자.

2. .on()으로 여러 종류의 이벤트 설정이 가능

- 첫번째 인자에 공백로 구분자로 해 여러 이벤트에 대응이 가능하다.
$(".foo").on("change blur", handler);


- 각 이벤트에 여러 처리자를 둘 수 있다.
 . 하나의 elements에 여러 이벤트 설정
$(".foo").on({
  "change" : function(){...},
  "blur" : function(){...}
});


 . 이벤트 대리자에서의 여러 이벤트 설정
$("#container") on ( {
  "change" : function(){...},
  "blur" : function(){...}
}, ".foo");

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

    function numberFormat(num) {
     var pattern = /(-?[0-9]+)([0-9]{3})/;

     while(pattern.test(num)) {
      num = String(num).replace(pattern,"$1,$2");
     }

     return num;
    }

 

혹은 정규식으로..

 

    Number(String(num_val).replace("/\..*|[^\d]/g", "")).toLocaleString().slice(0,-3);

'IT > jquery_javascript' 카테고리의 다른 글

jquery ajax  (0) 2015.04.16
jquery on function 함수.  (0) 2015.04.16
jQuery 1.9+ 에서 $.browser 사용하기  (0) 2015.04.14
javascript 모달, modal.  (0) 2015.04.14
모바일 usemap 사용하기  (0) 2015.04.03
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

create procedure sp_abcd
(
    in          abc_code          char(10)
)

proc_label:begin
   본문 내용

.

.

.

 

 

    if "abcd"="abcd" then
        leave proc_label;
    end if;

 

end

 

'IT > MySQL' 카테고리의 다른 글

MySql auto_increment 값 알아오기.  (0) 2015.04.27
Mysql 날짜 함수  (0) 2015.04.24
Mysql 반올림, 올림, 버림.  (0) 2015.04.20
HeidiSql 사용법 정리.  (0) 2015.03.11
mysql 설치  (0) 2013.08.16
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


jQuery 1.9버전 이상에서는 보안상의 문제로 $.browser 와 관련된 함수들을 사용할 수 없다고 합니다.

 

하지만 편법으로 위와 같은 함수를 사용할 수 있습니다.

 

제가 사용하려 했던 함수는

 

$.browser.msie 함수로써 이 함수는 IE로 접속했을때 true 값을 줍니다.

 

그럼 jQuery 1.9버전 이상에서 해당 함수들을 사용하는 방법을 보겠습니다.

 

jQuery.browser={};(function(){jQuery.browser.msie=false;

jQuery.browser.version=0;if(navigator.userAgent.match(/MSIE ([0-9]+)\./)){

jQuery.browser.msie=true;jQuery.browser.version=RegExp.$1;}})();

 

이상 3줄의 코드를 <script>태그 속에 넣어 놓는다면 이후에 $.browser.mise 또는 $browser.version 등의 함수를 사용할 수 있습니다.

 

이 코드의 출처는 아래입니​다.

 

http://n33.co/2013/03/23/browser-on-jquery-19x-for-legacy-ie-detection

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

모달 팝업을 사용하는 이유

1. 팝업 띄워놓고 부모창에서 딴 짓을 못하도록 하기 위해서
2. 속도가 빠르다고 하니
3. 열린 창 중에서 항상 위에 보이게 되니까

이 정도 인것 같다.


모달 팝업의 종류가 또 나뉘게 되는데
showModalDialog();
showModelessDialog();


showModalDialog

메시지 박스와 똑같다.
팝업이 열려 있는 동안 부모창은 먹통..


showModelessDialog

일반 팝업과 같지만, 항상 위 에 보여 지게 된다.
일반 팝업은 부모창을 누르게 되면 부모창 뒤로 숨겨지게 되지만
이건 무조건 항상 위에 표시가 된다.


Syntax : 반환값 = window.showModelessDialog(sUrl, [인자1], [설정])

Parameters :

sURL : 창을 띄울 주소를 말합니다.

인자1 : 창을 띄우는 창의 개체를 말하며, 일반적으로 새창을 띄울 경우 window(현재 창의개체명)을 사용합니다.

그러면 부모창의 내용을 일반적인 형태로 승계받습니다.

설정 : 창의 모양을 결정하는 옵션

 

dialogHeight:xx
창의 높이(픽셀단위)
dialogWidth:xx
창의 넓이(픽셀단위)
dialogLeft:xx
창의 왼쪽 위치(픽셀단위)
dialogTop:xx
창의 위쪽 위치(픽셀단위)
center:{yes | no | 1 | 0 | on | off }
창이 Desktop(창이 아님)의 중간에 위치할 것인가를 결정.
기본값은 yes
dialogHide: { yes | no | 1 | 0 | on | off }
창이 보여질 것인가를 결정.
기본값은 no
egde: { sunken | raised }
창 틀의 두께를 의미하며, sunken이 두텁고, raised가 얇음.
기본값은 raised
help: { yes | no | 1 | 0 | on | off }
도움말 아이콘(물음표)을 표시할 것인가 결정
기본값은 yes
resizable: { yes | no | 1 | 0 | on | off }
창 크기 조절이 가능한지 여부를 결정
기본값은 no
scroll: { yes | no | 1 | 0 | on | off }
스크롤바의 표시 여부.
기본값은 yes
status: { yes | no | 1 | 0 | on | off }
창 하단의 상태바를 표시할 것인가를 결정
기본값은 no
unadorned: { yes | no | 1 | 0 | on | off }
본인의 실력으로는 알 수 없음. 부모창과 자식창간의 제어와 관련된 개체인것 같은데....모르겠음..끙..


반환값

showModelessDialog 또는 showModelDialog 로 오픈시킨 창에서

returnValue라는 변수에 어떠한 값을 넣어줌으로써 자식창이 닫힐 때 부모창으로 값을 넘겨줄 수 있습니다

 

예시) JavaScript

부모창
var nTest = window.showModalDialog("dialog.html",self,"help=no; scroll=no; dialogWidth=350px; dialogHeight:300px; center:yes");


자식창
window.returnValue = "1111";
window.close();


파라미터


부모창
var args = new Array();
args[0] = "차문환"
args[1] = "테스트"
var retval = window.showModalDialog("dialog.html", args, "dialogWidth=800px; dialogHeight=900px; center:yes; status:no; scroll:no;resizable:yes; help:no");


자식창
var args = window.dialogArguments;
alert(args[0]);
alert(args[1]);

부모창의 함수 호출


부모창
Function aaa()
{
return "차문환"
}


자식창
var tempName = dialogArguments;
alert(tempName.aaa());


※ 부모 페이지에서 window.showModalDialog 로 팝업을 만들었을 경우 유효함.
window.showModalDialog("dialog.html",self,"help=no; scroll=no; dialogWidth=350px; dialogHeight:300px; center:yes");

반드시 인자값은 self 나 window 여야 한다.

Posted by 당양부부34

2015. 4. 3. 11:57 IT/PHP

php-mysql 개행 적용.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

<?=nl2br($row["am_memo"])?>

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

<img id="event_img" src="이미지" usemap="#mmap" style="width:100%;">
<map name="mmap">
<area id="ar1" shape="rect" href="링크1" target="_blank">
<area id="ar2" shape="rect" href="링크2" target="_blank">
<area id="ar3" shape="rect" href="링크3" target="_blank">
<area id="ar4" shape="rect" href="링크4" target="_blank">
</map>

<script language="Javascript">
<!--
function imageMap(rimg,rwidth,x1,y1,x2,y2,mapid){
 var rxsize = document.getElementById(rimg).width;
 var xp1 = rxsize / rwidth * x1;
 var yp1 = rxsize / rwidth * y1;
 var xp2 = rxsize / rwidth * x2;
 var yp2 = rxsize / rwidth * y2;
 document.getElementById(mapid).coords = xp1+","+yp1+ ","+xp2+","+yp2;
}

//원래 좌표위치
imageMap('event_img',실제 이미지 너비,747,1450,983,1700,'ar1');
imageMap('event_img',실제 이미지 너비,509,1450,745,1700,'ar2');
imageMap('event_img',실제 이미지 너비,28,1450,267,1700,'ar3');
imageMap('event_img',실제 이미지 너비,270,1450,506,1700,'ar4');
-->
</script>

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

function clipCopy(str) {

if ( document.all ) {

window.clipboardData.setData("Text", str);

alert("복사 되었습니다! 원하는 곳에 Ctrl+V 하셔서 붙여넣기 하세요~   ");

} else {

temp = prompt("자동 복사가 지원되지 않는 브라우져 입니다.\n\n 아래 주소를 눌러서 복사하신 후 사용해 주세요.   ", str);

}

}



Posted by 당양부부34

블로그 이미지
주요 토렌트를 블로깅하고 있습니다. 토렌트 순위 등은 다른 사이트를 찾아보세요. 주요 웹툰 순위도 게재했어요 경제를 좋아하는 일산의 행복한 프로그래머입니다.
당양부부34
Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함