>백엔드 개발 >PHP 문제 >데이터베이스에 삽입하고 PHP에서 이스케이프 작업을 수행하는 방법

데이터베이스에 삽입하고 PHP에서 이스케이프 작업을 수행하는 방법

藏色散人
藏色散人원래의
2021-10-14 09:11:233201검색

PHP에서 데이터베이스를 삽입하고 이스케이프 작업을 수행하는 방법: 1. Magic_quotes_gpc 항목을 설정합니다. 2. Magic_quotes_runtime 항목을 활성화합니다. 3. 자동으로 이스케이프를 실행하려면 Magic_quotes_sybase 항목을 활성화합니다.

데이터베이스에 삽입하고 PHP에서 이스케이프 작업을 수행하는 방법

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP는 어떻게 데이터베이스에 삽입하고 이스케이프 작업을 수행합니까?

php 데이터베이스에 쓸 때 특수 문자열 처리(특수 문자를 이스케이프하는 경우)

MySQL 및 GET 및 POST 데이터를 처리할 때 데이터의 따옴표를 이스케이프해야 하는 경우가 많습니다.

PHP에는 '(작은따옴표), "(큰따옴표), (백슬래시) 및 NULL 문자를 자동으로 변환할 수 있는 세 가지 설정이 있습니다.

PHP에서는 이를 매직 따옴표라고 부릅니다. 이 세 가지 설정은

magic_quotes_gpc

HTTP 요청 데이터(GET, POST 및 COOKIE)에 영향을 미칩니다. 런타임 시 변경할 수 없습니다. PHP의 기본값은 on입니다.

이 옵션을 켜면 GET, POST 및 COOKIE를 통해 전달된 데이터가 자동으로 변경됩니다.

예를 들어, test.php?id=abc'de"f

echo $_GET['id']; # abc'de"f

magic_quotes_gpc=On을 얻게 됩니다. 예를 들어, 위의 $_GET['id']가 데이터베이스에 기록되면 여전히 abc'de"f,

반대로, Magic_quotes_gpc=Off;이면 문자에 따옴표가 있어야 합니다( 작은따옴표든 큰따옴표든 관계없이 mysql에 직접 쓰면 바로 공백이 됩니다

그러나 mysql이 아닌 문서에 쓰면 됩니다. 그런 다음 abc'de"f

magic_quotes_runtime

이 켜져 있으면 데이터베이스 및 텍스트 파일을 포함하여 외부 소스에서 데이터를 가져와 반환하는 대부분의 함수에서 반환되는 데이터는 백슬래시로 변환된 정의입니다. 이 옵션은 런타임에 변경될 수 있으며 PHP의 기본값은 off입니다.

magic_quotes_sybase

이 옵션을 켜면 백슬래시 대신 작은따옴표가 이스케이프됩니다. 두 옵션이 모두 켜져 있으면 단일입니다. 따옴표가 이스케이프됩니다. 큰따옴표, 백슬래시 및 NULL 문자는 이스케이프되지 않습니다.

我表单内容本来是:<img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” />
<img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” />

대책 1: php.ini 파일 수정(php.ini 수정 방법은 다루지 않고 구글링해도 됩니다)

대책 2: 이스케이프 취소

1단계: 제출한 파일 찾기 $_POST['content']와 같은 데이터는 $content=stripslashes($_POST['content']);

로 변경하세요. 2단계: 나중에 $POST['content']를 $ content

로 바꾸세요. 3단계: 데이터베이스에 제출합니다. 데이터베이스 저장 공간은 여전히 ​​정상입니다. d4dbb4eb40da9c39abfe1f3203fedbc5(이 문제를 해결하는 방법을 알아야겠죠? 계속 횡설수설하는 건 어떨까요)

4단계: 스트립슬래시()를 사용하여 데이터베이스에서 읽은 콘텐츠를 필터링합니다.

stripslashes() 이 함수는 addlashes() 함수에 의해 추가된 백슬래시를 제거합니다. 데이터베이스 또는 HTML 양식에서 검색된 데이터를 정리하는 데 사용됩니다.

(

PHP 페이지에서 다음 상황이 발생하지 않도록 하려면:

작은따옴표는 '

큰따옴표는 "로 이스케이프됩니다.

다음과 같이 설정하여 방지할 수 있습니다.

php.ini에서 Magic_quotes_gpc = Off로 설정)

요약은 다음과 같습니다.

1 Magic_quotes_gpc=on의 경우

할 수 없습니다. 입력 및 출력 데이터베이스의 문자열 데이터

addlashes() 및 Stripslashes() 작업에서는 데이터가 정상적으로 표시됩니다.

이때 입력 데이터에 addlashes()를 수행하면

다음을 사용해야 합니다. 출력 시 초과분을 제거하기 위한 Stripslashes().

2. Magic_quotes_gpc=off의 경우

는 입력 데이터를 처리하기 위해 addlashes()를 사용해야 하지만, 출력 형식을 지정하기 위해 Stripslashes()를 사용할 필요는 없습니다.

addlashes()는 백슬래시를 변환하지 않기 때문에 데이터베이스에 함께 쓰는 것은 mysql이 sql 문 실행을 완료하는 데에만 도움이 됩니다.

php get_magic_quotes_gpc() 함수 사용법 소개

http ://www.php100.com/html/php/hanshu/2013/0905/4689.html //이렇게 이해하면 됩니다. 이 함수는 서버의 "특수 문자 이스케이프" 기능이 켜져 있습니다

addslashes()

.

전체 텍스트: http://php.net/manual/zh/function.addslashes.php //이 함수는 특수 문자를 일반 문자로 이스케이프합니다.

추천 학습: "

PHP 비디오 튜토리얼

"

위 내용은 데이터베이스에 삽입하고 PHP에서 이스케이프 작업을 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.