PHP - Superglobals: 당신의 전역 변수로의 관문

안녕하세요, 미래의 PHP 마법사 여러분! 오늘 우리는 PHP Superglobals의 세계로 흥미로운 여정을 떠납니다. 프로그래밍에 새로운 사람이라고 걱정하지 마세요 - 저는 당신의 친절한 안내자가 되겠습니다. 우리는 이 주제를 단계별로 탐구하겠습니다. 이 튜토리얼의 끝까지 따라오면, 당신은 이 강력한 도구들을 마스터하겠습니다!

PHP - Superglobals

Superglobals는 무엇인가요?

들어가기 전에, Superglobals가 무엇인지 이해해보겠습니다. 마법의 배낭이 있다고 상상해보세요. 그 배낭은 PHP 스크립트 어디서든 접근할 수 있습니다. 그것이 바로 Superglobals입니다 - 스코프에 관계없이 항상 사용할 수 있는 특별한 변수들입니다. PHP 세계에서의 신뢰할 수 있는 스위스 아ーノ이 다이스입니다!

이제 각 Superglobal을 자세히 탐구해보겠습니다:

1. $GLOBALS

$GLOBALS 배열은 PHP 스크립트에 있는 모든 전역 변수를 보관하는 보물 상자입니다. 함수나 메서드 내에서 전역 변수에 접근하고 싶을 때 매우 유용합니다.

예제:

$x = 75;
$y = 25;

function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

addition();
echo $z; // 출력: 100

이 예제에서 우리는 $GLOBALS를 사용하여 함수 내에서 전역 변수에 접근하고 수정하고 있습니다. 마법의 배낭을 어디서든 코드에서 만지는 것과 같습니다!

2. $_SERVER

$_SERVER는 헤더, 경로, 스크립트 위치에 대한 정보를 얻는 데 사용됩니다. 서버 환경에 대해 모두 아는 개인 비서를 두고 있는 것과 같습니다.

예제:

echo "서버 이름: " . $_SERVER['SERVER_NAME'] . "<br>";
echo "서버 소프트웨어: " . $_SERVER['SERVER_SOFTWARE'] . "<br>";
echo " 클라이언트 IP: " . $_SERVER['REMOTE_ADDR'];

이 코드 조각은 서버와 클라이언트에 대한 정보를 표시합니다. 시스템 정보를 수집하거나 서버 세부 정보를 기반으로 애플리케이션을 맞춤화하는 데 매우 유용합니다.

3. $_GET

$_GET는 URL을 통해 전달된 데이터를 수집합니다. 정보가 적힌 명함을 받는 것과 같습니다.

예제:

// URL은 다음과 같다고 가정합니다: example.com/page.php?name=John&age=30

echo "이름: " . $_GET['name'] . "<br>";
echo "나이: " . $_GET['age'];

이 코드는 URL을 통해 전달된 이름과 나이를 표시합니다. $_GET 데이터는 URL에서 볼 수 있으므로 민감한 정보를 사용하지 마세요!

4. $_POST

$_POST는 HTTP POST 방법으로 제출된 양식 데이터를 수집합니다. 정보가 들어있는 sealed 봉투를 받는 것과 같습니다.

예제:

// 양식 제출 후 처리된다고 가정합니다
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
echo "환영합니다, $name! $email로 연락드리겠습니다.";
}

이 코드는 양식을 제출한 데이터를 처리합니다. $_GET과 달리, $_POST 데이터는 URL에서 볼 수 없기 때문에 민감한 정보에 적합합니다.

5. $_FILES

$_FILES는 파일 업로드를 처리합니다. PHP 스크립트에 할당된 전담 파일 관리자와 같습니다.

예제:

if(isset($_FILES['file'])) {
$file_name = $_FILES['file']['name'];
$file_size = $_FILES['file']['size'];
$file_tmp = $_FILES['file']['tmp_name'];

move_uploaded_file($file_tmp, "uploads/" . $file_name);
echo "파일 업로드 성공!";
}

이 코드는 파일 업로드를 처리하고 업로드된 파일을 'uploads' 디렉토리에 저장합니다.

6. $_COOKIE

$_COOKIE는 사용자 브라우저에 데이터를 저장합니다. 자신에게 남긴 메모를 나중에 읽는 것과 같습니다.

예제:

// 쿠키 설정
setcookie("user", "John Doe", time() + (86400 * 30), "/");

// 쿠키 읽기
if(isset($_COOKIE['user'])) {
echo "환영합니다, " . $_COOKIE['user'] . "!";
} else {
echo "환영합니다, 새 사용자!";
}

이 코드는 쿠키를 설정하고 읽습니다. 쿠키는 사용자 선호 사항이나 로그인 상태를 기억하는 데 유용합니다.

7. $_SESSION

$_SESSION은 단일 사용자를 대상으로 여러 페이지에 걸쳐 데이터를 저장합니다. 각 방문자에게 할당된 개인 락커와 같습니다.

예제:

session_start();
$_SESSION['username'] = "JohnDoe";
$_SESSION['login_time'] = time();

echo "환영합니다, " . $_SESSION['username'] . "!";
echo "당신은 " . date('Y-m-d H:i:s', $_SESSION['login_time']) . "에 로그인했습니다.";

이 코드는 세션을 시작하고 사용자 정보를 저장합니다. 세션은 다른 페이지에서 사용자 상태를 유지하는 데 적합합니다.

8. $_REQUEST

$_REQUEST는 $_GET, $_POST, $_COOKIE의 조합입니다. 입력 데이터를 위한 원스톱 샵입니다.

예제:

// 이 코드는 GET, POST, 또는 COOKIE로부터 데이터가 왔든 간에 작동합니다
$username = $_REQUEST['username'];
echo "안녕하세요, $username!";

편리하지만, 명확성과 보안을 위해 $_GET, $_POST, $_COOKIE를 직접 사용하는 것이 일반적으로 좋습니다.

9. $_ENV

$_ENV는 환경 변수를 포함하고 있습니다. 서버의 제어판에 접근하는 것과 같습니다.

예제:

echo "문서 루트는: " . $_ENV['DOCUMENT_ROOT'];

이 코드는 서버의 문서 루트를 표시합니다. 환경 변수의 가용성은 서버 구성에 따라 다릅니다.

Superglobals 요약

여기서 다룬 모든 Superglobals의 빠른 참조 표입니다:

Superglobal 목적
$GLOBALS 전역 변수 어디서든 접근
$_SERVER 서버와 실행 환경 정보
$_GET HTTP GET 변수
$_POST HTTP POST 변수
$_FILES HTTP 파일 업로드 변수
$_COOKIE HTTP 쿠키
$_SESSION 세션 변수
$_REQUEST HTTP 요청 변수
$_ENV 환경 변수

그렇게 해서, 내 사랑하는 학생들이여! 우리는 PHP Superglobals의 세계를 여행했습니다. 이들은 강력한 도구이므로 신중하게 사용하세요. 항상 입력을 정리하고 검증하여 애플리케이션이 안전하도록 유지하세요.

마무리하면서, 제가 가르치기 시작한 초기에 들은 이야기를 떠올립니다. 한 학생이 "Superglobals가 왜 그렇게 불렸나요?"라고 물었습니다. 제가 장난스럽게 대답했습니다. "그들은 캡을 쓰고 범죄와 싸우는 전역 스코프에서 활동하기 때문입니다!" 물론 이것은 사실이 아닙니다만, PHP 스크립트의 슈퍼 헴어로서 그들을 생각하는 것은 멀지 않았습니다.

계속 연습하고, 호기심을 가지고, 행복하게 코딩하세요!

Credits: Image by storyset