addslashes(), stripslashes() 그리고, get_magic_quotes_gpc() > php

본문 바로가기
사이트 내 전체검색

php

addslashes(), stripslashes() 그리고, get_magic_quotes_gpc()

페이지 정보

작성자 서방님 댓글 0건 조회 145회 작성일 15-05-30 04:22

본문

addslashes() 함수와 그와 반대되는 stripslashes() 함수


DB 작업을 하기 위해서 쿼리를 작성하게 되는데, 이때 DB 시스템은 작은따옴표 ' 와 큰따옴표 " 그리고 백슬래시 / 그리고, NULL byte 를 문자열을 구분하는 등의 기준으로 이용하게 됩니다. 그런데, 하나의 문자열 안에 따옴표가 들어가 있게되면, 예상치 못하게 오류가 발생하게 됩니다. 그래서, 문자열을 데이터베이스에 저장할 수 있는 포맷으로 변화시켜줄 필요가 있습니다.


예를 들면, 


I'm a boy 를 문자열로 지정해서 'I'm a boy' 이렇게 쿼리로 전송되게 되면, I 뒤의 작은 따옴표 때문에 오류가 발생하게 됩니다.

그래서, 내부에 위치하게 될 따옴표들을 기준을 가지고 다르게 표현을 해 줘야합니다. 흔히들 이스케이프(escape) 시킨다...라고 표현하는데요.


I\'m a boy 로 바꾸어 주는 작업을 말합니다. 그 작업을 해주는 함수가 아래의 addslashes() 함수입니다.



string addslashes ( string $str )



그럼, DB에서 다시 꺼내왔을 때는 추가됐던 백슬래쉬를 제거를 해줘야 원래의 문자열이 되겠지요? 추가됐던 백슬래쉬를 제거해주는 함수가 아래의 stripslashes() 입니다.



string stripslashes ( string $str )




근데, 이 작업을 자동으로 해주도록 PHP 를 설정하는 방법이 있답니다.


그걸 magic_quotes_gpc 라고 합니다.


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


PHP 의 설정값이라, 우리가 php 파일내에서 임의로 세팅을 해 줄 수는 없습니다. 서버 관리자가 PHP를 설치할 때, 혹은 이후 설정을 하게 됩니다.


그럼, 현재 저 매직 쿼트 지피시 가 설정되어 있는지를 알아내는 함수가 있겠지요?


bool get_magic_quotes_gpc ( void )



이 함수가 FALSE을 리턴하면, 설정이 되어있지 않다는 뜻입니다.


php.net 에 있는 예를 살펴보는 것이 좋을 거 같습니다.


<?php
// If magic quotes are enabled
echo $_POST['lastname'];             // O\'reilly
echo addslashes($_POST['lastname']); // O\\\'reilly

// Usage across all PHP versions
if (get_magic_quotes_gpc()) {
    
$lastname stripslashes($_POST['lastname']);
}
else {
    
$lastname $_POST['lastname'];
}

?>



사용자가 가입폼 에서 이름을 입력하고 POST 방식으로 Submit 되어온 내용을 받아서 처리하는 부분인 것 같습니다. lastname 항목에 O'reilly 라고 입력을 했다고 보입니다.


magic quotes 가 ON 되어있으면, POST 방식으로 전달되어 온 $_POST['lastname'] 값은 자동으로 이스케이프가 되어있습니다. O'reilly 가 이스케이프 되었으니, O\'reilly 가 되어있겠군요. 


화면에 lastname을 출력하고자 할때, get_magic_quotes()를 통해 설정상태를 확인을 하고, 설정되어 있으면, 자동으로 \가 붙어 있을테니, stripslashes()를 하고 출력을 해야겠구요. 그렇지 않을 경우는 그냥 출력을 하면 되겠지요.

댓글목록

등록된 댓글이 없습니다.

Total 612건 20 페이지
게시물 검색

회원로그인

접속자집계

오늘
65
어제
163
최대
1,347
전체
154,599
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.