POTATO THAT WANT TO BE HUMAN

[PHP] 따옴표 처리 - addslashes() 본문

BACKEND/PHP

[PHP] 따옴표 처리 - addslashes()

녜힝 2022. 1. 27. 17:55
반응형

~~ 평화로운 홈페이지 프로젝트 중 게시판을 작업 중 ~~

 

게시글 제목에 따옴표("")를 작성했는데 오류가 발생해 작성에 실패했습니다.

 

왜 ?! 왜냐면요 ...

더보기

php에서는 DB작업을 하기 위해 쿼리를 작성합니다.

이때 DB 시스템은 작은 따옴표(')와 큰 따옴표("), 백슬래시(/), Null byte를 문자열을 구분하는 기준으로 이용합니다.

그런데, 하나의 문자열 안에 따옴표가 들어가 있게되면 오류가 발생하게 됩니다.

그렇기때문에 문자열을 데이터베이스에 저장할 수 있는 포맷으로 변화시켜줄 필요가 있습니다.

 

아 ! 따옴표도 따로 처리를 해줘야하는구나 !

그렇다면!!

 

따옴표는 어떻게 처리해줘야하나요?!? 📌

 

php에서 따옴표를 처리해주기 위해서는 addslashes() 함수를 이용해야합니다.

addslashes()는 내부에 올 따옴표들을 기준을 가지고 다르게 표현해줍니다. (이스케이프시킨다 ..)

함수 사용법은 addslashes(변환할 문자열); 입니다.

 

<?php

$str = "hello. i'm nehing";
$result = addslashes($str);

echo $result;  // hello. i\'m nehing

?>

 

 

반대로 원래 문자로 출력하고싶으면요?!? 📌

 

그럴땐 stripslashes()를 사용하면 됩니다.

사용법은 stripslashes(변환할 문자열); 입니다.

 

<?php

$str = "hello. i\m nehing.";
$result = stripslashes($str);

echo $result;  // hello. i'm nehing.

?>

 

 

여기서 대박적인 것 !

 

이 작업을 자동으로 해주도록 php를 설정하는 방법도 있습니다.

 

 

자동으로 이스케이프해준다구요?! 📌

 

예. 그걸 magic_quotes_gpc 라고 합니다.

gpc는 get, post, cookie입니다.

즉, GET, POST, COOKIE 를 통해 넘어오는 값들에 대해 자동으로 이스케이프를 시켜주는 기능입니다.

 

php파일을 살펴보면 php.ini 파일이 있습니다.

파일을 열고 get_magic_quotes_gpc를 찾아 옵션을 on으로 설정해주면 됩니다.

 

만약! get_magic_quotes_gpc가 on으로 설정되어있는 상태에서 

문자열에 addslashes()를 또 사용한다면 두번 이스케이프 처리가 되므로 주의해야 합니다. 

 

반응형

'BACKEND > PHP' 카테고리의 다른 글

[PHP] php세션(Session)  (0) 2022.04.01
[PHP] php란?  (0) 2022.01.18
Comments