PHP는 데이터를 인용하는 데 편리한 두 가지 매직 참조 함수인 Magic_quotes_gpc 및 Magic_quotes_runtime을 제공합니다. 이 두 함수가 php.ini에서 ON으로 설정되면 우리가 인용하는 데이터에 대해 작은 따옴표 ', 큰 따옴표 " 및 백슬래시가 발생합니다. 행은 자동으로 기호를 변환하고 데이터 작업의 올바른 작동을 보장하기 위해 백슬래시와 함께 자동으로 추가됩니다. 그러나 다른 버전의 PHP 또는 다른 서버 구성에서는 일부 Magic_quotes_gpc 및 Magic_quotes_runtime이 on으로 설정되고 일부는 on으로 설정됩니다. .off이므로 우리가 작성하는 프로그램은 on 및 off 조건을 모두 준수해야 합니다. 그렇다면 Magic_quotes_gpc와 Magic_quotes_runtime 함수의 차이점은 무엇입니까? 다음 설명을 참조하세요.
Magic_quotes_gpc
의 범위는 다음과같습니다
.
작업 시간: 예를 들어 스크립트가 실행될 때 요청이 시작됩니다.
Magic_quotes_runtime
범위: 파일에서 읽은 데이터, exec() 실행 결과 또는 SQL 쿼리에서 얻은 데이터.
작업 시간: 스크립트가 실행 상태에서 생성된 데이터에 액세스할 때마다.
따라서 Magic_quotes_gpc의 설정 값은 Get/Post/Cookies를 통해 얻은 데이터에 영향을 미치며, Magic_quotes_runtime의 설정 값은 파일에서 읽은 데이터 또는 데이터베이스 쿼리에서 얻은 데이터에 영향을 미칩니다.
예:
<form action="" method="post" >
STR:<입력 유형="텍스트" 이름="str">
<입력 유형="제출">
</양식>
<?php
/* 다음 형식을 입력합니다: '" 이 기호는 Magic_quotes_gpc가 켜져 있지 않으면 백슬래시로 이스케이프되지 않습니다.*/
echo '현재 POST를 통해 전달된 값은 다음과 같습니다.' ,$_POST['str'], '<br />';
if (get_magic_quotes_gpc()) { // Magic_quotes_gpc가 켜져 있는지 확인하세요. 그렇지 않으면 addlashes를 사용하여 변환하세요. 의로운
$str = $_POST['str'];
} 또 다른 {
$str = addlashes($_POST['str']);
}
echo '이스케이프 버전은 다음과 같습니다:' ,$str, '<hr />';
$sql = "성(성) 값에 삽입('$str')"
//=========================== = ================================================ = ======
//-----magic_quotes_gpc는 Get/Post/Cookies를 통해 얻은 www.devdao.com 데이터만 이스케이프합니다.
//---magic_quotes_runtime은 이스케이프됩니다: 파일에서 읽은 데이터, exec() 실행 결과 또는 SQL 쿼리에서 얻은 데이터
//================================================ =====================================
$data = implode(file('try.php')); // 테스트를 위해 '" 문자를 계속 씁니다.
echo 'try.php의 데이터는 다음과 같습니다.';
if (get_magic_quotes_runtime()) {
$데이터 = $데이터;
echo '시스템에서 이스케이프 처리됨' .$data;
} 또 다른 {
echo 'addlashes에 의해 탈출됨' .$data = addlashes($data);
}
$sql = "성(성) VALUES('$data')에 INSERT INTO";
echo '<br />SQL문은:<br />' ,$sql;
//---데이터베이스에 들어갈 때 모든 것이 이스케이프되지만 추가 백슬래시가 있습니다. 원본 데이터를 읽으려면 스트립슬래시()를 사용하여 백슬래시를 제거하세요.
//---stripslashes()와 addlashes()는 반대 효과를 가집니다.
?>가장 중요한 차이점은 위에서 언급한 두 가지 점입니다. Magic_quotes_gpc의 설정 값은 Get/Post/Cookies를 통해 얻은 데이터에 영향을 미칩니다. Magic_quotes_runtime의 설정 값은 데이터 읽기에 영향을 미칩니다. set_magic_quotes_runtime(): Magic_quotes_runtime 값을 설정합니다. 0=off. 1=on. echo phpinfo() 를 사용할 수 있습니다. ): Magic_quotes_gpc 값을 확인하세요. 0 = 닫기. 1 = 열기. get_magic_quotes_runtime (): Magic_quotes_runtime 값을 확인하세요. 0=끄기 1=켜기 set_magic_quotes_gpc() 함수가 없습니다. 즉, Magic_quotes_gpc의 값을 프로그램에서 설정할 수 없습니다.