출처: phpschool 송효진




1. register_globals = off

http://www.php.net/manual/kr/language.variables.predefined.php
{{{
 PHP 4.2.0 이후 버전부터, PHP 디렉티브 register_globals의 기본값은 off가 되었다. register_globals를 off로 놓으면, 전역 유효영역안의 미리 선언된 변수 집합들에 영향을 미친다. 예를 들면, DOCUMENT_ROOT값을 얻기 위해서는 $DOCUMENT_ROOT 대신에 $_SERVER['DOCUMENT_ROOT']를, http://www.example.com/test.php?id=3에서 $id 대신에 $_GET['id']를, $HOME 대신에 $_ENV['HOME']을 사용해야 한다.

이와 관련된 변경사항은 register_globals의 설정 엔트리를 읽거나, 전역 등록 사용하기에 관한 보안 챕터는 물론, » 4.1.0과 » 4.2.0 Release Announcements도 참고하기 바란다.

superglobal arrays와 같은 가용한 PHP의 예약된 미리 선언된 변수를 사용하는 것을 추천한다.
}}}
http://www.php.net/manual/kr/security.globals.php
{{{
이 기능은 PHP 5.3.0부터 배제되고 PHP 6.0.0부터 제거됩니다. 이 기능에 의존하지 않기를 권합니다.
}}}

쓰지 말랜다. 보안상의 문제로 아예 빼버린다니까 쓰지 말자.



2. $array[key]

http://www.php.net/manual/kr/language.types.array.php
<?php
// Show all errors
error_reporting(E_ALL);

$arr = array('fruit' => 'apple', 'veggie' => 'carrot');

// Correct
print $arr['fruit'];  // apple
print $arr['veggie']; // carrot

// Incorrect.  This works but also throws a PHP error of level E_NOTICE because
// of an undefined constant named fruit
//
// Notice: Use of undefined constant fruit - assumed 'fruit' in...
print $arr[fruit];    // apple

// This defines a constant to demonstrate what's going on.  The value 'veggie'
// is assigned to a constant named fruit.
define('fruit', 'veggie');

// Notice the difference now
print $arr['fruit'];  // apple
print $arr[fruit];    // carrot

// The following is okay, as it's inside a string. Constants are not looked for
// within strings, so no E_NOTICE occurs here
print "Hello $arr[fruit]";      // Hello apple

// With one exception: braces surrounding arrays within strings allows constants
// to be interpreted
print "Hello {$arr[fruit]}";    // Hello carrot
print "Hello {$arr['fruit']}";  // Hello apple

// This will not work, and will result in a parse error, such as:
// Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING'
// This of course applies to using superglobals in strings as well
print "Hello $arr['fruit']";
print "Hello $_GET['foo']";

// Concatenation is another option
print "Hello " . $arr['fruit']; // Hello apple
?>

보다시피 배열의 문자키는 반드시 따옴표를 써야 한다.
그것은 큰따옴표 안의 변수도 마찬가지라는 점을 주의하자.
나는 하일라이팅이 제대로 되지 않는 에디터라도 헷갈리지 않도록,
print 'Hello '.$arr['fruit']; 을 추천한다.



3. magic_quote_gpc
여기서 php group 과 나의 방침이 충돌한다. php group 에서는 MySQL 을 쓰는 것을 가정하고, 초보자임을 가정해서 magic_quote_gpc 를 on 하는 것을 기본으로 했지만,
http://www.php.net/manual/kr/language.variables.external.php
{{{
Note: magic_quotes_gpc 설정 디렉티브는 Get, Post, Cookie 값에 영향을 준다. 이 값이 켜져있으면, 그 값(It's "PHP!")은 자동적으로 (It\'s \"PHP!\")이 될것이다. 이 회피는 DB 입력을 위해 필요하다. 또한 addslashes(), stripslashes()과 magic_quotes_sybase를 참고한다.
}}}
보다시피 addslashes() 는 정답이 아닌 것이다.
sybase 만 유독 유별나서 저렇게 따로 처리한 것이고,
웬만하면 addslashes() 로도 될 것이다.
하지만, db 에 넣는것만을 하는것이 아닌 이상 문자열 비교에 이스케이프는 방해다.
그리고 언제나 예외는 있는 법이다.

그에 대해서는 2년 전에 쓴 글이 있으니 그것을 참조하기 바란다.

http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=54406&sca=&sfl=wr_name%7C%7Csubject&stx=%BC%DB%C8%BF%C1%F8&sop=and&page=5

번호 제목 글쓴이 날짜 조회 수
160 jpgraph 1.20.4 에서 한글 폰트 사용 [16] Myip 심걸 2011.07.28 14552
159 [AS3] Integer.reverseBytes() of Java [1] Myip 심걸 2011.07.28 12796
158 [AIR] AIR를 포함하는 ASDoc 만들기 [2] Myip 심걸 2011.07.28 12901
157 [AIR] EncrytpedLocalStore 저장 위치 Myip 심걸 2011.07.28 12621
156 [AS3]trace 를 지우거나 주석화하지 않고 비활성화 시키기 [2] Myip 심걸 2011.07.28 13068
155 PHP코딩팁. include와 return의 특성 Myip 심걸 2011.07.28 12951
154 [PHP] 배열의 활용 Myip 심걸 2011.07.28 12789
» php 기본 문법. php group 에서 시키는 대로 하자 Myip 심걸 2011.07.28 14831
152 인스턴스의 타입체크하기 Myip 심걸 2011.07.28 12719
151 Flash Builder에서 TODO, FIXME 사용하기 [23] Myip 심걸 2011.07.28 13047
150 [Flex] Flash Builder 4 Compiler Options [15] Myip 심걸 2011.07.28 13625
149 [AS3] 인스턴스의 클래스와 패키지명까지 알아오기 [1] Myip 심걸 2011.07.28 12795
148 javascript로 난수 발생 Myip 심걸 2011.07.28 12652
147 webkit계열에서 css문건내 @charset 선언문제 Myip 심걸 2011.07.28 12710
146 [AS3] 인스턴스 자동 선언 옵션은 반드시 Off 합시다 [35] Myip 심걸 2011.07.28 19796
145 [AS3] 최대, 최소값 자르기 두가지 방법 Myip 심걸 2011.07.28 12695
144 [AS3]최적화 코드 Myip 심걸 2011.07.28 12663
143 [AS3] Flash Player 10.1 활용하기 [4] Myip 심걸 2011.07.28 12926
142 [FF3].html post .php 데이터 손실 Myip 심걸 2011.07.28 12555
141 new 안하고, 전역변수 안쓰기. class, static Myip 심걸 2011.07.28 12658