PHP

register_globals = off 인 경우 경고메시지 처리

  1. 세션을 사용하는 경우, 아래와 같은 Warning 이 나올 수 있다. 이것은 php.ini 에서 register_globals = off 로 설정된 경우에 나타난다.
    Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. 
    Please be advised that the session extension does not consider global variables as a source of data, 
    unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or 
    session.bug_compat_warn to off, respectively. in Unknown on line 0
  2. 일반적으로 register_globals = on 으로 설정하는 것은 보안상 추천하지 않는다.
    register_globals = off 로 설정된 상태에서 위와 같은 경고가 나오지 않게 하려면 PHP 예약 정의 변수를 사용하도록 수정한다.
    register_globals boolean
    EGPCS(환경, GET, POST, 쿠키, 서버) 변수를 전역 변수로 등록할지를 결정합니다. 예를 들어, register_globals = on 이라면 
    URL http://www.example.com/test.php?id=3 요청에 $id를 생성합니다. 또는, $_SERVER['DOCUMENT_ROOT']에서 $DOCUMENT_ROOT를 등록합니다. 
    스크립트의 전역 위치에 유저 데이터로 채워지는것을 원하지 않는다면, 이 옵션을 끄십시오. PHP 4.2.0부터는 이 지시자의 기본값은 off입니다. 
    자동전역: $_ENV, $_GET, $_POST, $_COOKIE, $_SERVER 등의 PHP 예약 정의 변수를 사용하는 것을 권장합니다. 
    보안 챕터의 register_globals 사용에 대한 관련 정보를 읽어보십시오. 
    
    register_globals는 실행시에 설정(ini_set())할 수 없는 점에 주의하십시오. 그러나, 호스트가 .htaccess를 허용한다면, 그것을 이용할 수 있습니다. 
    예제 .htaccess 엔트리: php_flag register_globals on
  3. session_register(“aaa”) 함수를 쓰려고 할때, 경고가 발생했으며, 이를 없애기 위해서 $_SESSION['aaa'] = $aaa; 로 대체하였다.