사용자 도구

사이트 도구


develop:php:session1

문서의 이전 판입니다!


PHP

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

세션을 사용하는 경우, 아래와 같은 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

일반적으로 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

필자의 경우, session_register(“aaa”) 함수를 쓰려고 할때, 경고가 발생했으며, 이를 없애기 위해서 $_SESSION['aaa'] = $aaa; 로 대체하였다.

develop/php/session1.1179517992.txt.gz · 마지막으로 수정됨: 2007/05/19 04:53 저자 starlits