<?php
preg_match(‘/대조 할 문자/’,’입력한 문자’, $matches);
?>
예를 들어 나는 a를 필터링하고 싶다하면
‘/a/’ 이렇게 되겠죠?
this를 필터링하고 싶다하면
‘/this/’ 이렇게 되겠죠?
그럼 만약에 특수문자를 필터링하고 싶을땐요?
‘ 이거 필터링 하고싶은데요?
그럴땐 특수문자 앞에 \를 붙이면 됩니다.
‘/\’/’
근데 가끔씩 ‘/admin/’i 이렇게
i가 붙을수가 있습니다
이 경우는 대소문자를
구분하지 않는다는 뜻입니다!
입력한 문자의 경우는
일반적으로 저희가 GET방식이든
POST방식이든
사용자가 input을 하면 특정 변수에 담잖아요
ex) $a=$_GET[‘id’];
이렇게요 get 방식으로 id값을 php변수 a에 넣는거요!
만약에 저희가 get방식으로 id에 1234를 넣었으면
$a=1234가 되겠죠?
그래서 일반적으로 사용자 input이 담긴
php변수를 저 위치에 적어요!
좀 더 구조를 갖추면 이렇게 됩니다.
preg_match(‘/\’/’,’$a’,$match);
이렇게 되면 $a변수에 ‘가 있으면 감지되겠죠?
마지막으로 $match입니다
여기 match 변수에는 뭐가 담기냐?
바로 사용자가 설정한 값과 input값이 일치하는 경우
그 값을 $match에 배열형태로 저장합니다.
쉽게 얘기해서 검거당한 문자열은
$match에 기록된다!
예를들어 preg_match(‘/abcd/’,$a,$match)
$a에 있는 값이 acety이면
a랑 c가 match안에 배열형태로 저장됩니다.
마지막으로 이 함수는
하나라도 문자열이 검거가 되면 1을 반환하고
하나라도 검거가 안되면 0을 반환합니다
그래서 제가 본 문제들은 이런 형태로 되어 있었습니다!
if(preg_match(‘/\’/’,$id,$match))
{
echo “no hack”;
exit();
}
만약 $id의 입력값에 ‘가 있으면
no hack이라고 출력하고 php가 종료됩니다.
물론 문자열 필터링 할 때 이거 말고도
몇 가지 함수들이 더 있긴 합니다!
str_replace -> 다른 문자로 바꿔줌
preg_replace -> 다른 문자로 바꿔줌
답글 남기기