개발하는 루루언니

PHP - addslashes() , stripslashes() 작은따움표 문자열 포함 오류 방지 본문

php

PHP - addslashes() , stripslashes() 작은따움표 문자열 포함 오류 방지

혜닝혜루 2024. 1. 8. 15:53
728x90
반응형

 

 

1. addslashes()

 

- PHP 에서 문자열을 표시할 때, "(큰 따옴표) 와 ' (작은 따옴표) 가 문자열에 포함되어 있는 경우 오류가 발생하는 경우가 있다.

DB에서 값을 가져올 때, 또는 넣을 때 이러한 오류를 방지하고자 addslashes 와 stripslashe 를 사용한다.

 

 

<?php

$str = "my name is 'hyein' ";

?>
<div data-name'<?php $str ?>'>
	<?php echo $str ?>
</div>

<!-- 오류 발생 -->

 

만약 php $str 변수에 있는 값을 div 태그안에 data 요소에 집어넣는다 가정하자.

data-name 속성값을 선언하기 위해 작은 따옴표(')를 사용하였다.

하지만 그 뒤에 나오는 str 변수에는 작은 따옴표 (')가 포함되어져 있다.

 

이로 인하여 개발자가 넣고자 하는 값이 data-name 속성에 들어가는게 아니라 my name is 부분까지만 잘려서 들어가게 된다.

잘못된 값의 삽입으로 인해 데이터베이스와의 통신, 또는 해당 태그에 onclick 등의 이벤트가 포함되어져 있다면, 오류가 발생하게 된다.

 

이를 방지하기 위해 addslasheds를 사용한다.

 

<?php

	$str = "my name is 'heyin'";
?>

<div data-name='<?php addslashes($str); ?> '>
	<?php echo $str ?>
</div>

<!-- 정상 실행 -->

 

addslashes 를 추가해주면

 

💡.  my name is \'hyein\'

 

와 같이 실행결과가 나온다. addslashes 로 인해 백슬래시가 자동으로 들어가지기 때문에 문자열과 data-name 속성에 값이 정상적으로 대입되고 오류가 발생하지 않는 것을 확인할 수 있다.

 

 

 

2. stripslashes() 

 

stripslashes 는addslashes로 인해 문자열에 추가된 백스페이스를 제거해주는 함수이다.

 

<?php
    $str = "my name is 'heyin'";
    $str = addslashes($str);
    echo stripslashes($str);
?>

 

 

addslashes 로 백스페이스가 생긴 문자열의 백스페이스를 제거하여 출력한다. 위의 실행결과는 다음과 같다.

 

my name is 'heyin'

 

728x90