php

[php 튜토리얼] 6회차 / php 전역 변수

namgi 2022. 9. 7. 01:14
반응형

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회차로 돌아오겠다.

반응형