>  기사  >  백엔드 개발  >  PHP의 9개 슈퍼전역 변수에 대한 자세한 설명(사용 예)

PHP의 9개 슈퍼전역 변수에 대한 자세한 설명(사용 예)

青灯夜游
青灯夜游앞으로
2020-07-23 16:59:203840검색

PHP의 9개 슈퍼전역 변수에 대한 자세한 설명(사용 예)

PHP 4.1.0에 도입된 슈퍼전역 변수는 모든 범위에서 항상 사용할 수 있는 내장 변수입니다. PHP에서 미리 정의된 많은 변수는 "수퍼글로벌"입니다. 즉, 스크립트의 전체 범위에서 사용할 수 있습니다. 전역 $variable;을 실행하지 않고도 함수나 메서드 내에서 액세스할 수 있습니다.

일반적으로 사용되는 9개의 슈퍼 전역 변수가 있습니다:

1. $_GET –> 전송 방법

2. $_POST –> $_REQUEST –> post 값 ​​

4. $GLOBALS –> 전역 범위에서 사용 가능한 모든 변수를 참조합니다.

5. $_FILES –> $_SERVER –> _SESSION –> 세션 제어에 사용됩니다

8. $_COOKIE –> 세션 제어에 사용됩니다

9. $_ENV –> 서버 측 환경 변수

자세한 내용은 다음과 같습니다

. $_GET –> 전송 방법 가져오기

PHP $_GET은 HTML 양식(method="get")을 제출한 후 양식 데이터를 수집하는 데에도 사용할 수 있습니다. $_GET는 URL로 전송된 데이터를 수집할 수도 있습니다.

예를 들어 URL 링크에 액세스합니다.
http://localhost/test_get.php?subject=PHP&web=W3school.com.cn

사용 방법은 다음과 같습니다.

<html>
<body>
    <?php 
        echo "Study " . $_GET[&#39;subject&#39;] . " at " . $_GET[&#39;web&#39;];
    ?>
</body>
</html>

2. $_POST –> 게시 전송 방법

PHP $_POST는 제출된 HTML을 수집하는 데 널리 사용됩니다. with method="post" 양식 뒤의 양식 데이터입니다. $_POST는 일반적으로 변수를 전달하는 데에도 사용됩니다. 아래 예는 입력 필드와 제출 버튼이 있는 양식을 보여줍니다. 사용자가 데이터를 제출하기 위해 제출 버튼을 클릭하면 양식 데이터가 ff9c23ada1bcecdd1a0fb5d5a0f18437 태그의 작업 속성에 지정된 파일로 전송됩니다. 이 예에서는 양식 데이터를 처리하기 위해 파일 자체를 지정합니다. 다른 PHP 페이지를 사용하여 양식 데이터를 처리하려면 파일 이름을 원하는 파일 이름으로 변경하세요. 그런 다음 슈퍼 전역 변수 $_POST를 사용하여 입력 필드의 값을 수집할 수 있습니다.

<html>
<body>
    <form method="post" action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>">
        Name: <input type="text" name="fname">
        <input type="submit">
    </form>

    <?php 
        $name = $_POST[&#39;fname&#39;]; 
        echo $name; 
    ?>
</body>
</html>

3. $_REQUEST –> get 및 post 메소드 모두에서 값을 받을 수 있습니다

PHP $ _REQUEST는 HTML 양식으로 제출된 데이터를 수집하는 데 사용됩니다. 아래 예는 입력 필드와 제출 버튼이 있는 양식을 보여줍니다. 사용자가 제출 버튼을 클릭하여 양식 데이터를 제출하면 해당 양식 데이터가 태그의 action 속성에 지정된 스크립트 파일로 전송됩니다. 이 예에서는 양식 데이터를 처리하기 위해 파일 자체를 지정합니다. 양식 데이터를 처리하기 위해 다른 PHP 파일을 사용해야 하는 경우 파일 이름을 원하는 파일 이름으로 변경하세요. 그런 다음 슈퍼 전역 변수 $_REQUEST를 사용하여 입력 필드의 값을 수집할 수 있습니다:

<html>
<body>
    <form method="post" action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>">
        Name: <input type="text" name="fname">
        <input type="submit">
    </form>

    <?php 
        $name = $_REQUEST[&#39;fname&#39;]; 
        echo $name; 
    ?>
</body>
</html>

4. $GLOBALS –>는 전역 범위에서 사용 가능한 모든 변수를 나타냅니다.

$GLOBALS 이러한 종류의 전역 변수는 PHP 스크립트의 어디에서나(함수 또는 메소드에서) 전역 변수에 액세스하는 데 사용됩니다.

    PHP는 모든 전역 변수를 $GLOBALS[index]라는 배열에 저장합니다. 변수의 이름은 배열의 키입니다.
  • 주로 전역 변수를 로컬 범위에서 사용할 수 없지만 전역 변수를 사용해야 하는 경우 $GLOBALS를 사용합니다.
  • 다음 예에서는 슈퍼 전역 변수 $GLOBALS를 사용하는 방법을 보여줍니다.

    <?php 
        $x = 75; 
        $y = 25;
    
        function addition() { 
          $GLOBALS[&#39;z&#39;] = $GLOBALS[&#39;x&#39;] + $GLOBALS[&#39;y&#39;]; 
        }
    
        addition(); 
        echo $z; 
    ?>

5 –>

$_FILES를 사용하여 파일을 업로드합니다. 바이너리 파일 업로드 abc.mp3 파일을 입력하고 업로드하는 경우 서버는 $_FILES 변수를 통해 얻은 파일의 관련 정보를 얻어야 합니다.

    $_FILES 슈퍼 전역 변수에는 POST 메소드를 통해 서버에 업로드된 데이터에 대한 정보가 포함됩니다. 이 슈퍼 전역 변수는 다른 변수와 달리 5개의 요소를 포함하는 2차원 배열입니다.
  • 요소/코드

    Description

요소/코드

Description$_FILES['userfile']['name']클라이언트 시스템 파일 원래 이름 파일의 MIME 유형, 브라우저는 "image/gif"와 같은 이 정보에 대한 지원을 제공해야 합니다업로드된 파일의 크기(바이트)파일 업로드 후 서버에 저장되는 임시 파일 이름

$_FILES['userfile']['type']

$_FILES['userfile']['size']

$_FILES['userfile']['tmp_name']

$_FILES['userfile']['error']

파일 업로드 관련 오류 코드입니다. ['오류']는 PHP 버전 4.2.0에 추가되었습니다. 이 변수의 이름은 error 이지만 이 변수는 실제로 성공 시 채워집니다. 가능한 값은 5개입니다. 표 아래 참고 사항을 참조하세요. ③

注:  
 ① 在 PHP 4.1.0 版本以前该数组的名称为 $HTTP_POST_FILES,它并不像 $_FILES 一样是自动全局变量。PHP 3 不支持 $HTTP_POST_FILES 数组。  
 ② 如果表单中没有选择上传的文件,则 PHP 变量 $_FILES[‘userfile’][‘size’] 的值将为 0,$_FILES[‘userfile’][‘tmp_name’] 将为 none。
 ③ error字段5个错误码:

  • UPLOAD_ERR_OK   文件成功上传

  • UPLOAD_ERR_INI_SIZE  文件大小超出了

  • MAX_FILE_SIZE 指令所指定的最大值。

  • UPLOAD_ERR_FORM_SIZE  文件大小超出了MAX_FILE_SIZE 隐藏表单域参数(可选)指定的最大值。

  • UPLOAD_ERR_PARTIAL  文件只上传了一部分UPLOAD_ERR_NO_FILE  上传表单中没有指定文件

前端上传文件示例代码:

/**创建一个文件上传表单
允许用户从表单上传文件是非常有用的。
请看下面这个供上传文件的 HTML 表单:**/
<html>
<body>
    <form action="upload_file.php" method="post" enctype="multipart/form-data">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file" /> 
        <input type="submit" name="submit" value="Submit" />
    </form>
</body>
</html>

后端处理文件示例代码:

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

6. $_SERVER  –> 系统环境变量

$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。

下面的例子展示了如何使用 $_SERVER 中的某些元素:

<?php 
    echo $_SERVER[&#39;PHP_SELF&#39;];
    echo "<br>";
    echo $_SERVER[&#39;SERVER_NAME&#39;];
    echo "<br>";
    echo $_SERVER[&#39;HTTP_HOST&#39;];
    echo "<br>";
    echo $_SERVER[&#39;HTTP_REFERER&#39;];
    echo "<br>";
    echo $_SERVER[&#39;HTTP_USER_AGENT&#39;];
    echo "<br>";
    echo $_SERVER[&#39;SCRIPT_NAME&#39;];
?>

常用的字段:

元素/代码

描述

元素/代码 描述

$_SERVER[‘PHP_SELF’]

返回当前执行脚本的文件名。

$_SERVER[‘GATEWAY_INTERFACE’]

返回服务器使用的 CGI 规范的版本。

$_SERVER[‘SERVER_ADDR’]

返回当前运行脚本所在的服务器的 IP 地址。

$_SERVER[‘SERVER_NAME’]

返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。

$_SERVER[‘SERVER_SOFTWARE’]

返回服务器标识字符串(比如 Apache/2.2.24)。

$_SERVER[‘SERVER_PROTOCOL’]

返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。

$_SERVER[‘REQUEST_METHOD’]

返回访问页面使用的请求方法(例如 POST)。

$_SERVER[‘REQUEST_TIME’]

返回请求开始时的时间戳(例如 1577687494)。

$_SERVER[‘QUERY_STRING’]

返回查询字符串,如果是通过查询字符串访问此页面。

$_SERVER[‘HTTP_ACCEPT’]

返回来自当前请求的请求头。

$_SERVER[‘HTTP_ACCEPT_CHARSET’]

返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)

$_SERVER[‘HTTP_HOST’]

返回来自当前请求的 Host 头。

$_SERVER[‘HTTP_REFERER’]

返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。

$_SERVER[‘HTTPS’]

是否通过安全 HTTP 协议查询脚本。

$_SERVER[‘REMOTE_ADDR’]

返回浏览当前页面的用户的 IP 地址。

$_SERVER[‘REMOTE_HOST’]

返回浏览当前页面的用户的主机名。

$_SERVER[‘REMOTE_PORT’]

返回用户机器上连接到 Web 服务器所使用的端口号。

$_SERVER[‘SCRIPT_FILENAME’]

返回当前执行脚本的绝对路径。

$_SERVER[‘SERVER_ADMIN’]

该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。

$_SERVER[‘SERVER_PORT’]

Web 服务器使用的端口。默认值为 “80”。

$_SERVER[‘SERVER_SIGNATURE’]

返回服务器版本和虚拟主机名。

$_SERVER[‘PATH_TRANSLATED’]

当前脚本所在文件系统(非文档根目录)的基本路径。

$_SERVER[‘SCRIPT_NAME’]

返回当前脚本的路径。

$_SERVER[‘SCRIPT_URI’]

返回当前页面的 URI。

7. $_SESSION  –> 用于会话控制

PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。

  • 当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。

  • 通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。

  • Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

①开始 PHP Session :  
在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于  标签之前

<?php session_start(); ?>

<html>
<body>

</body>
</html>

②存储 和使用Session 变量:

<?php
session_start();
// store session data
$_SESSION[&#39;views&#39;]=1;
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION[&#39;views&#39;];
?>

</body>
</html>

③终结 Session
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。

//通过 unset() 函数用于释放指定的 session 变量:
<?php
unset($_SESSION[&#39;views&#39;]);
?>

//通过 session_destroy() 函数彻底终结 session:
<?php
session_destroy();
?>

注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。

8. $_COOKIE  –> 用于会话控制

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

①创建 Cookie

//语法
setcookie(name, value, expire, path, domain);

//示例
<?php 
setcookie("user", "Alex Porter", time()+3600);
//创建名为 "user" 的 cookie,把为它赋值 "Alex Porter"。我们也规定了此 cookie 在一小时后过期
?>

<html>
<body>

</body>
</html>

②取回 Cookie 值

//示例a:取回了名为 "user" 的 cookie 的值,并把它显示在了页面上
<?php
// Print a cookie
echo $_COOKIE["user"];

// A way to view all cookies
print_r($_COOKIE);
?>

//示例b:使用 isset() 函数来确认是否已设置了 cookie
<html>
<body>

<?php
if (isset($_COOKIE["user"]))
  echo "Welcome " . $_COOKIE["user"] . "!<br />";
else
  echo "Welcome guest!<br />";
?>

</body>
</html>

9. $_ENV  –> 服务器端环境变量

PHP中的$_ENV是一个包含服务器端环境变量的数组,不同系统不完全一样。  
 部分变量示例:
$_ENV[ ‘HOSTNAME’ ]  服务器的主机名
$_ENV[ ‘SHELL’ ]  系统 shell

$_ENV只是被动的接受服务器端的环境变量并把它们转换为数组元素,你可以尝试直接输出它:

//输出内容格式清晰,ThinkPHP可以直接用dump()
var_dump($_ENV);

//输出到屏幕
print_r($_ENV);

//输出key-value键值对
foreach($_ENV as $key=>$val){echo $key.&#39;--------&#39;.$val.&#39;<br>&#39;;}

【相关教程推荐:《PHP教程》】

위 내용은 PHP의 9개 슈퍼전역 변수에 대한 자세한 설명(사용 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제