반응형
php 6회차다.
이번 회차에서는 슈퍼전역번수(super global)에 대해 배웠다.
php 슈퍼전역변수(super global)
-슈퍼 전역 변수는 모든 범위에서 항상 사용할 수 있는 내장 변수이다.
- $Globals
- $_Server
- $_Request
- $_Post
- $_Get
$GLOBALS - 전역 변수에 액세스하는 데 사용되는 PHP 슈퍼 전역 변수
<?php
//변수 x와 y를 지정
$x = 10;
$y = 15;
//plus라는 함수에 $GLOBALS['z']를 할당
function plus() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
//plus함수 호출, z 출력
plus();
echo $z;
?>
PHP는 $GLOBALS[ 'index' ] 라는 배열에 모든 전역 변수를 저장한다.
'index' 는 변수의 이름을 할당한다.
실행 결과는 다음과 같다
$_SERVER - 여러 서버에 관한 정보를 보유하는 변수
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
실행결과는 다음과 같다.
코드 | 설명 |
$_SERVER['PHP_SELF'] | 현재 실행 중인 스크립트의 파일 이름을 반환합니다. |
$_SERVER['GATEWAY_INTERFACE'] | 서버가 사용 중인 CGI(Common Gateway Interface) 버전을 반환합니다. |
$_SERVER['SERVER_ADDR'] | 호스트 서버의 IP 주소를 반환합니다. |
$_SERVER['SERVER_NAME'] | 호스트 서버의 이름을 반환합니다. |
$_SERVER['SERVER_SOFTWARE'] | 서버 식별 문자열을 반환합니다(예: Apache/2.2.24). |
$_SERVER['SERVER_PROTOCOL'] | 정보 프로토콜(예: HTTP/1.1)의 이름과 개정판을 반환합니다. |
$_SERVER['REQUEST_METHOD'] | 페이지에 액세스하는 데 사용되는 요청 방법(예: POST)을 반환합니다. |
$_SERVER['REQUEST_TIME'] | 요청 시작의 타임스탬프를 반환합니다. |
$_SERVER['QUERY_STRING'] | 쿼리 문자열을 통해 페이지에 액세스한 경우 쿼리 문자열을 반환합니다. |
$_SERVER['HTTP_ACCEPT'] | 현재 요청에서 Accept 헤더를 반환합니다. |
$_SERVER['HTTP_ACCEPT_CHARSET'] | 현재 요청(예: utf-8, ISO-8859-1)에서 Accept_Charset 헤더를 반환합니다. |
$_SERVER['HTTP_HOST'] | 현재 요청에서 호스트 헤더를 반환합니다. |
$_SERVER['HTTP_REFERER'] | 현재 페이지의 전체 URL을 반환합니다(모든 사용자 에이전트가 지원하지 않으므로 신뢰할 수 없음). |
$_SERVER['HTTPS'] | 보안 HTTP 프로토콜을 통해 쿼리된 스크립트입니다. |
$_SERVER['REMOTE_ADDR'] | 사용자가 현재 페이지를 보고 있는 IP 주소를 반환합니다. |
$_SERVER['REMOTE_HOST'] | 사용자가 현재 페이지를 보고 있는 호스트 이름을 반환합니다. |
$_SERVER['REMOTE_PORT'] | 웹 서버와 통신하기 위해 사용자 컴퓨터에서 사용 중인 포트를 반환합니다 |
$_SERVER['SCRIPT_FILENAME'] | 현재 실행 중인 스크립트의 절대 경로 이름을 반환합니다. |
$_SERVER['SERVER_ADMIN'] | 웹 서버 구성 파일의 SERVER_ADMIN 지시문에 지정된 값을 반환합니다 |
$_SERVER['SERVER_PORT'] | 통신을 위해 웹 서버에서 사용 중인 서버 시스템의 포트를 반환합니다(예: 80). |
$_SERVER['SERVER_SIGNATURE'] | 서버 생성 페이지에 추가된 서버 버전 및 가상 호스트 이름을 반환합니다. |
$_SERVER['PATH_TRANSLATED'] | 현재 스크립트에 대한 파일 시스템 기반 경로를 반환합니다. |
$_SERVER['SCRIPT_NAME'] | 현재 스크립트의 경로를 반환합니다. |
$_SERVER['SCRIPT_URI'] | 현재 페이지의 URI를 반환합니다. |
$_REQUEST - HTML 양식 제출 후 수집하는데 사용되는 슈퍼 전역 변수
<!DOCTYPE html>
<html>
<body>
<!--제출된 데이터가 'action' 속성에 지정된 파일로 전송-->
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
//<!--텍스트 입력필드 설정-->
Name: <input type="text" name="fname">
<!--데이터 제출필드 설정-->
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//입력 필드의 값을 수집
$name = htmlspecialchars($_REQUEST['fname']);
//만약 'name'(텍스트 필드)이 공백이라면
if (empty($name)) {
//'Name is empty' 출력
echo "Name is empty";
//아니라면 입력값 출력
} else {
echo $name;
}
}
?>
</body>
</html>
Name 칸에 텍스트 작성 후 '제출'을 누르면
'$_REQUEST' 슈퍼 전역 변수를 이용하여 입력한 데이터를 수집한다.
그 후 데이터가 <form> 태그의 action 속성에 지정된 파일로 전송된다.
$_POST - method="post"로 HTML 양식 제출, 데이터 수집
<!DOCTYPE html>
<html>
<body>
<!--제출된 데이터가 'action' 속성에 지정된 파일로 전송-->
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
//<!--텍스트 입력필드 설정-->
Name: <input type="text" name="fname">
<!--데이터 제출필드 설정-->
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//입력 필드의 값을 수집
$name = $_POST['fname']
//만약 'name'(텍스트 필드)이 공백이라면
if (empty($name)) {
//'Name is empty' 출력
echo "Name is empty";
//아니라면 입력값 출력
} else {
echo $name;
}
}
?>
</body>
</html>
'$_REQUEST' 와 같은 구조이다.
$_GET - method="get"로 HTML 양식 제출, 데이터 수집
$_GET은 url로 전송된 데이터도 수집할 수 있다.
밑의 코드는 예시의 HTML 페이지 코드이다.
이 코드 안에 'subject, web' 매개변수가 들어있다.
<html>
<body>
<a href="test_get.php?subject=PHP&web=W3schools.com">Test $GET</a>
</body>
</html>
사이트 이용자가 Test $Get 링크를 클릭한다면,
위에서 정한 'subject, web' 매개변수가 'test_get.php'로 전송하게 된다.
아래 코드는 'test_get.php'의 코드이다.
<html>
<body>
<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>
</body>
</html>
코드를 실행한다면 이런 화면이 되고
'Test $GET' 을 클릭한다면
위에서 정한 매개변수가 들어가 출력이 되는 것이다.
이번 회차에선 php 전역변수에 대해 배웠다.
이번 내용은 나도 이해가 안 되는 부분이 있어,
시간이 생각보다 오래걸렸다.
다음 회차는 드디어 1주가 되는
7회차로 돌아오겠다.
반응형
'php' 카테고리의 다른 글
[php 튜토리얼] 1주차 최종정리 보고서 (0) | 2022.09.08 |
---|---|
[php 튜토리얼] 7회차 / php 함수 (0) | 2022.09.08 |
[php 튜토리얼] 5회차 / php 배열(array) (0) | 2022.09.04 |
[php 튜토리얼] 4회차 / php Loop (0) | 2022.09.04 |
[php 튜토리얼] 3회차 / php 조건문, Switch (0) | 2022.09.03 |