Note: PHP 4.1.0부터, $_POST, $_GET, $_REQUEST처럼 $_SESSION을 전역 변수로 사용할 수 있습니다. $HTTP_SESSION_VARS와 달리 $_SESSION은 항상 전역입니다. 그러므로, $_SESSION에 대하여 global 키워드를 사용할 필요가 없습니다. 원한다면, $_SESSION 대신 $HTTP_SESSION_VARS를 사용할 수 있습니다. $_SESSION을 사용하려면 session_start()를 사용하여 세션을 시작해야 합니다.
$_SESSION 연관 배열에 들어가는 키는 PHP의 일반 변수명과 동일한 제한을 가집니다. 즉, 숫자로 시작할 수 없고, 문자나 밑줄로 시작해야 합니다. 자세한 내용은 매뉴얼 변수 섹션을 참고하십시오.
register_globals가 꺼져있으면, 전역 연관 배열 $_SESSION의 멤버만 세션 변수로 등록됩니다. 복구된 세션 변수는 $_SESSION 배열 안에만 존재합니다.
$_SESSION(또는 PHP 4.0.6 이하에서 $HTTP_SESSION_VARS)의 사용은 보안 향상과 코드 가독성을 위하여 추천됩니다. $_SESSION으로, session_register(), session_unregister(), session_is_registered() 함수를 사용할 필요가 없습니다. 세션 변수를 다른 변수처럼 접근할 수 있습니다.
Example #1 $_SESSION으로 변수 등록하기.
<?php
session_start();
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
?>
Example #2 $_SESSION으로 변수 제거하기와 register_globals 비활성화.
<?php
session_start();
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
unset($_SESSION['count']);
?>
세션 변수에 참조를 사용할 수 없습니다. 다른 변수에 대한 참조를 복구할 방법이 없기 때문입니다.
register_globals가 활성화되어 있으면, 각 전역 변수를 세션 변수로 등록할 수 있습니다. 세션을 재시작할 때, 이 변수들이 해당 전역 변수로 복구됩니다. PHP가 어떤 전역 변수가 세션 변수로 등록되어야 하는지 알아야 하기 때문에, 사용자가 session_register() 함수로 변수를 등록해야 합니다. 단순히 $_SESSION에 엔트리를 설정할 수도 있습니다.
PHP 4.3.0 이전에, $_SESSION을 사용하고 register_globals를 비활성화 했다면, session_register(), session_is_registered(), session_unregister()를 사용하지 마십시오. 보안과 성능 관계로 register_globals를 끄기를 권합니다.
register_globals가 켜져있으면, 전역 변수와 $_SESSION 엔트리는 자동적으로 이전 세션 인스턴스에서 등록한 같은 값을 참조합니다. 그러나, $_SESSION에 변수를 등록하면, 전역 변수는 다음 요청부터 사용할 수 있습니다.
PHP 4.2.3까지 결함이 있습니다. 새 세션 변수를 session_register()를 사용하여 등록하면, 전역 영역과 $_SESSION 엔트리가 다음 session_start()까지 동일한 값을 참조하지 않습니다. 즉, 새로 등록한 전역 변수를 변경해도 $_SESSION 엔트리에 반영되지 않습니다. PHP 4.3.0에서 고쳐졌습니다.