>백엔드 개발 >PHP 튜토리얼 >PHP get_magic_quotes_gpc() 함수 사용법 소개

PHP get_magic_quotes_gpc() 함수 사용법 소개

怪我咯
怪我咯원래의
2017-05-22 11:21:133157검색

php get_magic_quotes_gpc() 함수는 무엇을 합니까?

앞서 php Stripslashes() 함수와 addlashes() 함수의 차이점을 설명할 때 get_magic_quotes_gpc() 함수에 대해 언급했는데 이 함수는 어떤 역할을 할까요? 이번 장에서는 get_magic_quotes_gpc()

함수에 대한 설명과 관련 내용을 소개합니다.

get_magic_quotes_gpc 함수는 사용자가 제공한 데이터에 슬래시가 추가되었는지 확인하는 데 사용됩니다. 이는 php.ini 구성 파일에 있습니다. get_magic_quotes_gpc() 함수는 아래에 자세히 소개되어 있습니다.

get_magic_quotes_gpc 함수 소개

PHP 시스템 함수인 PHP 환경변수 Magic_quotes_gpc의 값을 가져옵니다.

구문:

 long get_magic_quotes_gpc(void);

반환 값: 긴 정수

이 함수는 변수 Magic_quotes_gpc(GPC, Get/Post)를 가져옵니다. /쿠키) 값입니다. 0을 반환하면 이 기능이 꺼지고, 1을 반환하면 이 기능이 켜집니다. Magic_quotes_gpc가 켜져 있으면 모든 '(작은따옴표), "(큰따옴표), (백슬래시) 및 null 문자는 자동으로 백슬래시가 포함된 오버플로 문자로 변환됩니다. PHP 구성 파일에

부울이 있습니다. 설정, Magic_quotes_runtime. 이 기능이 켜져 있으면 대부분의 PHP 기능은 외부에서 가져온 데이터(데이터베이스 또는 파일 포함)에 백슬래시를 반복적으로 추가하는 경우 자동으로 백슬래시를 추가합니다. 문자가 있으면 문자열에 여러 개의 백슬래시가 있으므로 프로그램이 문자열에 관계없이 정상적으로 실행되도록 하려면 set_magic_quotes_runtime() 및 get_magic_quotes_runtime()을 사용하여 php.ini 파일에서 Magic_quotes_runtime 상태를 설정하고 감지해야 합니다. 서버 설정에서는 get_magic_quotes_runtime을 사용하여 프로그램 시작 부분에서 설정 상태를 감지하여 수동으로 처리할지 여부를 결정하거나 처음에 set_magic_quotes_runtime(0)을 사용할 수 있습니다(또는 자동 이스케이프가 필요하지 않은 경우).

Magic_quotes_gpc는 GPC에서 전송하는 데이터(get, post, cookie)에서 ''에 백슬래시를 자동으로 추가할지 여부를 설정합니다. get_magic_quotes_gpc()를 사용하여 시스템 설정을 감지할 수 있습니다. 이 설정이 켜져 있지 않으면 addlashes() 함수를 사용하여 이를 추가할 수 있습니다. 해당 기능은 데이터베이스 쿼리 문에서 필요할 때 특정 문자 앞에 백슬래시를 추가하는 것입니다. 이러한 문자는 작은따옴표('), 큰따옴표("), 백슬래시() 및 NUL(NULL 문자)입니다.

PS: PHP 5.3.0부터 더 이상 사용되지 않습니다. PHP 5.4.0에서는 이 옵션이 삭제되었으며 모든 프로그래밍은 Magic_quotes_gpc=Off에서 수행되어야 합니다. 이러한 환경에서 사용자의 데이터가 이스케이프되지 않으면 결과는 프로그램에만 국한되지 않습니다. 이는 단지 오류일 뿐이므로 데이터베이스 주입 공격의 위험이 있으므로 이제부터 이 설정을 On으로 설정하지 마세요. 서버를 PHP6으로 업데이트해야 프로그램이 제대로 작동하지 않을 수 있습니다. >

php는 addlashes 기능을 사용하기로 결정할 수 있도록 get_magic_quotes_gpc 기능이 활성화되어 있는지 확인합니다

function SQLString($c, $t){
 $c=(!get_magic_quotes_gpc())?addslashes($c):$c;
 switch($t){
  case 'text':
   $c=($c!='')?"'".$c."'":'NULL';
   break;
  case 'search':
   $c="'%%".$c."%%'";
   break;
  case 'int':
   $c=($c!='')?intval($c):'0';
   break;
 }
 return $c;
}
.

데이터베이스 공격을 방지하기 위해 get_magic_quotes_gpc()를 사용하는 올바른 방법

코드는 다음과 같습니다

<?php
function check_input($value)
{
// 去除斜杠
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// 如果不是数字则加引号
if (!is_numeric($value))
{
$value = “‘” . mysql_real_escape_string($value) . “‘”;
}
return $value;
}
$con = mysql_connect(“localhost”, “hello”, “321″);
if (!$con)
{
die(‘Could not connect: ‘ . mysql_error());
}
// 进行安全的 SQL
$user = check_input($_POST[&#39;user&#39;]);
$pwd = check_input($_POST[&#39;pwd&#39;]);
$sql = “SELECT * FROM users WHERE
user=$user AND password=$pwd”;
mysql_query($sql);
mysql_close($con);
?>

요약: get_magic_quotes_gpc()의 기능은 환경 변수의 값을 가져오는 것입니다. Magic_quotes_gpc.php6에서 삭제되었으므로 이 함수는 더 이상 PHP6에 존재하지 않습니다.

[추천 관련 기사]:

1.php addlashes에 대한 자세한 설명( ) 함수와 Stripslashes() 함수의 예

2.php Stripslashes() 함수와 addlashes() 함수의 차이점에 대한 자세한 예

위 내용은 PHP get_magic_quotes_gpc() 함수 사용법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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