PHP의 슈퍼글로벌 변수는 코드 전체에서 사용할 수 있는 특별한 내장(built-in) 변수입니다.
PHP에 슈퍼글로벌 변수는 9개($_GET, $_POST, $_SERVER, $_COOKIE, $_REQUEST, $_FILES, $_SESSION, $_ENV, $GLOBALS)가 있습니다. 이 글에서는 슈퍼글로벌 변수의 사용법, 활용 방법, 중요성, 주의 사항을 상세히 설명합니다.
이 글은 코딩에브리바디(codingeverybody.kr)의 내용을 참조해 작성했습니다.
슈퍼글로벌 변수(Superglobals)
슈퍼글로벌 변수는 PHP에서 글로벌 범위(글로벌 스코프, Global Scope)에서 사용할 수 있는 특수한 변수입니다. 슈퍼글로벌 변수는 어디에서나 사용할 수 있기 때문에 이름에서 알 수 있듯이 "슈퍼글로벌"이라고 불립니다.
슈퍼글로벌 변수는 PHP에서 글로벌 스코프에서 사용할 수 있는 특수한 내장 변수입니다. 슈퍼글로벌 변수는 어디에서나 사용할 수 있기 때문에 이름에서 알 수 있듯이 슈퍼글로벌이라고 불립니다.
슈퍼글로벌 변수는 여러 부분에서 자주 사용되며, 주요한 역할을 수행합니다. 몇 가지 중요한 개념과 역할을 살펴보겠습니다.
- 전역적인 접근성: 슈퍼글로벌 변수는 어디서든 접근할 수 있는 변수로, 함수나 클래스의 범위에 제한되지 않습니다. 코드 전체에서 해당 변수에 접근하여 값을 읽거나 수정할 수 있습니다.
- 데이터 전달과 공유: 슈퍼글로벌 변수를 사용하면 데이터를 전역적으로 공유하고 전달할 수 있습니다. 예를 들어, $_GET과 $_POST 슈퍼글로벌 변수는 웹 요청에서 전달된 데이터에 접근하여 처리할 수 있습니다.
- 상태 유지: $_SESSION과 $_COOKIE 슈퍼글로벌 변수는 세션과 쿠키를 통해 상태 정보를 유지하고 전달할 수 있습니다. 로그인 상태, 사용자 설정 등을 저장하고 관리하는 데 사용됩니다.
- 서버 환경 정보: $_SERVER 슈퍼글로벌 변수는 서버와 관련된 정보에 접근할 수 있습니다. 예를 들어, 현재 페이지의 URL, 호스트명, 사용자 에이전트 등을 확인할 수 있습니다.
. 슈퍼글로벌 변수들에 대해 살펴보겠습니다.
$_GET
$_GET 변수는
HTTP GET 메서드를 통해 전달된 데이터 즉, URL 매개변수로 전달된 데이터를 저장하는 슈퍼글로벌 변수입니다.
키와 값으로 구성된 연관 배열입니다.
<a href="test-get.php?name=Hannes">Test $_GET</a>
echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!';
// Hello Hannes!
$_POST
$_POST 변수는
HTML 양식을 통해 HTTP POST 메서드인 method="post"로 제출된 데이터를 저장하는 PHP 슈퍼글로벌 변수입니다.
키와 값으로 구성된 연관 배열입니다.
<form method="post" action="process.php">
<input type="text" name="username">
<input type="text" name="age">
<button type="submit">제출</button>
</form>
/* $_POST 변수는 다음과 같은 키 = 값 쌍을 저장하게 됩니다.
$_POST['username'] = 'John';
$_POST['age'] = '25';
*/
$name = $_POST['username'];
$age = $_POST['age'];
echo 'Name: ' . $name . '<br>';
echo 'Age: ' . $age;
$_SERVER
$_SERVER 변수는
현재 실행 중인 PHP 스크립트에서 관련된 서버 및 실행 환경에 대한 정보를 저장하는 슈퍼글로벌 변수입니다.
키와 값으로 구성된 연관 배열입니다.
// 현재 스크립트의 파일명을 출력합니다.
echo $_SERVER['PHP_SELF'];
// 호스트 서버의 IP 주소를 출력합니다.
echo $_SERVER['SERVER_ADDR'];
// 호스트 서버의 이름을 출력합니다.
echo $_SERVER['SERVER_NAME'];
// 현재 페이지의 완전한 URL을 출력합니다.
echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$_COOKIE
$_COOKIE 변수는
클라이언트에 저장된 쿠키를 가져오거나 설정할 수 있게 쿠키 정보를 저장하는 슈퍼글로벌 변수입니다.
키와 값으로 구성된 연관 배열입니다.
$_COOKIE 변수를 사용하면 쿠키를 쉽게 가져오거나 설정할 수 있습니다. 예를 들어, 쿠키를 가져오려면 다음과 같이 $_COOKIE 변수를 사용할 수 있습니다.
$name = $_COOKIE['name'];
코드는 name이라는 이름의 쿠키의 값을 $name 변수에 저장합니다. 쿠키를 설정하려면 다음과 같이 setcookie() 함수를 사용할 수 있습니다.
setcookie('name', 'value', time() + (3600 * 24 * 365), '/');
// 사용자 이름이 설정되어 있는지 확인합니다.
if (isset($_COOKIE['username'])) {
$username = $_COOKIE['username'];
echo "안녕하세요, $username 님!";
} else {
// 사용자 이름이 설정되어 있지 않으면 기본 인사말을 표시합니다.
echo '안녕하세요, 방문자님!';
}
// 사용자 이름을 쿠키로 설정합니다.
setcookie('username', 'John Doe', time() + 3600); // 1시간 동안 유지됨
?>
$_REQUEST
$_REQUEST 변수는
클라이언트의 요청을 저장하는 슈퍼글로벌 변수입니다.
기본적으로 $_GET, $_POST 및 $_COOKIE의 내용을 포함하는 연관 배열입니다.
<?php
// index.php
// GET 매개변수 액세스
if (isset($_REQUEST['name'])) {
$name = $_REQUEST['name'];
echo "안녕하세요, {$name}님!";
}
// POST 매개변수 액세스
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_REQUEST['email'])) {
$email = $_REQUEST['email'];
echo "가입해 주셔서 감사합니다. 등록된 이메일: {$email}";
}
}
// 쿠키 값 액세스
if (isset($_REQUEST['visited'])) {
$visited = $_REQUEST['visited'];
echo "방문한 적이 있습니다. 마지막 방문일: {$visited}";
}
?>
<!DOCTYPE html>
<html>
<head>
<title>$_REQUEST 예제</title>
</head>
<body>
<h1>사용자 정보 입력</h1>
<form method="post" action="index.php">
<label for="name">이름:</label>
<input type="text" name="name" id="name">
<label for="email">이메일:</label>
<input type="email" name="email" id="email">
<button type="submit">가입</button>
</form>
</body>
</html>
$_FILES
$_FILES 변수는
클라이언트가 웹 양식을 통해 서버에 업로드한 파일 정보를 저장하는 슈퍼글로벌 변수입니다.
키와 값으로 구성된 연관 배열입니다.
<form action="upload-file.php" enctype="multipart/form-data" method="post">
<input type="file" name="userfile">
<button type="button">파일 업로드하기</button>
</form>
// 업로드된 파일의 배열
$_FILES['userfile'] // 배열 키는 파일을 업로드하는 input 요소 name 속성의 값: name="userfile"
// 업로드된 배열의 주요 속성
$_FILES['userfile']['name'] // 업로드된 파일의 원래 이름
$_FILES['userfile']['type'] // 업로드된 파일의 MIME 유형
$_FILES['userfile']['size'] // 업로드된 파일의 크기 (바이트)
$_FILES['userfile']['tmp_name'] // 서버에 임시로 저장된 파일의 경로
$_FILES['userfile']['error'] // 업로드 과정에서 발생한 오류 코드
$_SESSION
$_SESSION 변수는
세션 데이터 정보를 저장하는 슈퍼글로벌 변수입니다.
키와 값으로 구성된 연관 배열입니다.
세션을 사용하려면 먼저 session_start() 함수를 호출하여 세션을 시작해야 합니다. 이렇게 하면 세션 ID가 생성되고, 클라이언트의 쿠키 또는 URL 임베딩을 통해 클라이언트에게 전송됩니다. 이후 클라이언트가 서버로 요청을 보낼 때마다 세션 ID가 함께 전송되어 서버에서 해당 세션에 접근할 수 있습니다.
다음은 $_SESSION 배열을 사용한 간단한 예제입니다. 사용자의 방문 횟수를 세션을 사용하여 추적하는 예제입니다.
session_start();
// 방문 횟수를 추적하는 세션 변수를 증가시킵니다.
if (isset($_SESSION['visit_count'])) {
$_SESSION['visit_count']++;
} else {
$_SESSION['visit_count'] = 1;
}
// 방문 횟수를 표시합니다.
echo "방문 횟수: " . $_SESSION['visit_count'];
$_ENV
$_ENV 변수는
PHP 환경 변수(Environment variables)를 저장하는 슈퍼글로벌 변수입니다.
키와 값으로 구성된 연관 배열입니다.
환경 변수는 운영 체제, 웹 서버 또는 기타 응용 프로그램에 의해 설정될 수 있습니다. $_ENV 배열은 현재 스크립트에 사용 가능한 모든 환경 변수를 포함합니다. 이러한 변수들은 PHP 파서가 실행 중인 환경에서 PHP의 글로벌 네임스페이스로 가져옵니다. 많은 변수들은 PHP가 실행되는 쉘(shell)에서 제공되며, 각각의 시스템은 다른 종류의 쉘을 사용할 가능성이 있으므로 정확한 목록은 불가능합니다. 정의된 환경 변수 목록을 확인하기 위해서는 해당 쉘의 문서를 참조하시기 바랍니다.
다른 환경 변수로는 CGI 변수들이 포함되어 있는데, PHP가 서버 모듈이든 CGI 프로세서로 실행 중인지 여부와 관계없이 제공됩니다.
// 환경 변수 설정
$_ENV['DATABASE_HOST'] = 'localhost';
$_ENV['DATABASE_USER'] = 'myuser';
$_ENV['DATABASE_PASSWORD'] = 'mypassword';
// 환경 변수 읽기
$host = $_ENV['DATABASE_HOST'];
$user = $_ENV['DATABASE_USER'];
$password = $_ENV['DATABASE_PASSWORD'];
// 환경 변수 출력
var_dump($_ENV);
$GLOBALS
$GLOBALS 변수는
PHP에서 사용되는 글로벌 변수를 저장하는 슈퍼글로벌 변수입니다.
키와 값으로 구성된 연관 배열입니다.
$GLOBALS는 PHP에서 사용되는 글로벌 변수를 담고 있는 배열 변수입니다. 이 배열의 키는 변수 이름이며, 값은 해당 변수에 할당된 값입니다. 예를 들어, $GLOBALS['my_var']는 글로벌 변수 $my_var에 접근할 수 있도록 합니다.
또 다른 출처 정보
https://codingeverybody.jp/php-superglobals-variables/
PHP スーパーグローバル変数:完全ガイド - codingEverybody
PHPのスーパーグローバル変数は、コード全体で使用できる特別な変数であり、正しく活用することで開発作業を効率的に進めることができます。PHPには、全部で9種類のスーパーグローバル変
codingeverybody.jp
https://coding.courses/php-superglobals/
PHP Superglobals – Simple and Essential Usage Guide - codingCourses
This guide provides a complete list of PHP superglobals and global variables, along with simple and essential usage tips for developers to use these features effectively.
coding.courses