>  기사  >  백엔드 개발  >  PHP 슈퍼 전역 변수를 얻는 방법(구성 및 공유)

PHP 슈퍼 전역 변수를 얻는 방법(구성 및 공유)

WBOY
WBOY원래의
2021-10-15 18:16:333475검색

이전 기사에서는 "5분 안에 PHP 익명 함수 이해하기(상세 예시)"를 가져왔습니다. 이번 기사에서는 PHP의 익명 함수에 대한 관련 지식을 자세히 소개합니다. 함수 내부에서 참조할 수 있는 슈퍼 전역 변수에 대한 관련 이슈를 살펴보시고 모든 분들께 도움이 되었으면 좋겠습니다!

PHP 슈퍼 전역 변수를 얻는 방법(구성 및 공유)

PHP 슈퍼 전역 변수

함수 외부에서 정의된 전역 변수는 함수 내부에서 참조할 수 없지만, 때로는 함수 내에서 이러한 전역 변수를 사용해야 하는 경우가 있습니다. 슈퍼 전역 변수는 함수 내에서 참조될 수 있습니다.

PHP에는 여러 개의 슈퍼 전역 변수가 사전 정의되어 있어 스크립트의 모든 범위에서 참조할 수 있습니다. 특별한 지시 없이 슈퍼 전역 변수를 함수와 클래스에서 사용할 수 있습니다.

PHP 슈퍼 전역 변수:

  • $GLOBALS

  • $_SERVER

  • $_REQUEST

  • $_POST

  • $_GET

  • $_FILES

  • $ _ENV

  • $_COOKIE

  • $_SESSION

오늘은 일상적으로 흔히 사용되는 몇 가지 슈퍼 전역 변수에 대해 살펴보겠습니다. 다음으로 이러한 슈퍼 전역 변수의 몇 가지 예를 살펴보겠습니다. . 일부 용도 및 기능.

먼저 살펴보겠습니다.

PHP $GLOBALS

$GLOBALS 는 전역 범위에서 사용 가능한 모든 변수를 포함하는 사전 정의된 슈퍼 전역 배열입니다. 변수 이름은 다음과 같습니다. 배열의 키. $GLOBALS는 PHP 스크립트의 전체 범위에서 액세스할 수 있습니다. $GLOBALS 是一个预定义的超全局数组,其中包含了全局作用域中的所有可用变量,变量的名字就是数组的键。$GLOBALS在一个PHP脚本的全部作用域中都可以访问。

示例如下:

<?php 
//定义两个全局变量,函数内部不可以访问
$a = 75; 
$b = 25;
//定义函数
function addition() 
{ 
//将全局变量变为超级全局变量,这样在函数内部就可以正常访问了
$GLOBALS[&#39;c&#39;] = $GLOBALS[&#39;a&#39;] + $GLOBALS[&#39;b&#39;]; 
}
//调用函数
addition();
//输出函数内部定义的全局变量 
echo $c; 
?>

输出结果:

PHP 슈퍼 전역 변수를 얻는 방법(구성 및 공유)

$GLOBALS 不限定必须在函数内部使用,在程序的任意位置都能使用。由上述示例看得出,全局变量变为超级全局变量,这样在函数内部就可以正常访问了。

global

还有一个与$GLOBALS 很类似的叫 global 关键字,它也可以让我们在函数内部使用在函数外部定义的全局变量。

语法格式如下:

global 变量1, 变量2, ...

global 关键字后面可以和多个变量作为参数,多个变量之间以“,”(逗号)分隔。同时,使用global要注意一些关键点:

  • global 关键字,不能在函数外部使用,只能在函数内部使用;

  • global 关键字只能用来引用函数外部的全局变量,在引用时不能直接赋值,赋值和声明语句需要分开写;

  • 在函数内部销毁一个使用 global 关键字修饰的变量时,函数外部的变量不受影响。

示例如下:

<?php
    $a = 1;
    $b = 2;
    $c = 3;
    function demo(){
        global $a, $b;
        echo "变量 a:".$a;
        echo "<br>变量 b:".$b;
        echo "<br>变量 c:".$c;
    }
    demo();
?>

在上述例子中,定义了三个变量,但是在函数内global关键字只修饰了两个变量,那输出结果会有什么影响呢?

输出结果:

PHP 슈퍼 전역 변수를 얻는 방법(구성 및 공유)

可以看出,结果只输出了变量a和b的,因为global关键字只在函数内修饰了两个,所以变量c没有使用成功。

通过两个例子我们能够看出与 global 相比,$GLOBALS 有一下几点不同:

  • global $ 指的是对函数外部同名变量的引用,是两个互不影响的变量,而 $GLOBALS[] 指的是函数外部变量本身,是一个变量。

  • $GLOBALS 不限定必须在函数内部使用,在程序的任意位置都能使用。

PHP $_SERVER

PHP $_SERVER准确来说是一个数组,$_SERVER 包含了头信息、路径、以及脚本位置等等信息。这个数组中的项目由 Web 服务器创建。服务器可能会忽略一些,不一定每个服务器都提供全部项目。

接下来给大家举个例子如何使用PHP $_SERVER:

<?php 
//输出当前脚步的文件名
echo "<h3>输出当前脚步的文件名</h3>";
echo $_SERVER[&#39;PHP_SELF&#39;];
echo "<hr/>";
//当前脚步所在服务器的主机名
echo "<h3>当前脚步所在服务器的主机名</h3>";
echo $_SERVER[&#39;SERVER_NAME&#39;];
echo "<hr/>";
//当前请求头中 Host
echo "<h3>当前请求头中 Host</h3>";
echo $_SERVER[&#39;HTTP_HOST&#39;];
echo "<hr/>";
//引导用户代理到当前页的前一页的地址(如果存在)
echo "<h3>引导用户代理到当前页的前一页的地址(如果存在)</h3>";
echo $_SERVER[&#39;HTTP_REFERER&#39;];
echo "<hr/>";
//用来检查浏览页面的访问者在用什么操作系统
echo "<h3>用来检查浏览页面的访问者在用什么操作系统</h3>";
echo $_SERVER[&#39;HTTP_USER_AGENT&#39;];
echo "<hr/>";
//包含当前脚本的路径
echo "<h3>包含当前脚本的路径</h3>";
echo $_SERVER[&#39;SCRIPT_NAME&#39;];
?>

输出结果

PHP 슈퍼 전역 변수를 얻는 방법(구성 및 공유)

给大家分享一下, 更多$_SERVER 变量中的重要元素:

  • $_SERVER['PHP_SELF']---当前执行脚本的文件名,与 document root 有关。

  • $_SERVER['GATEWAY_INTERFACE']

    예제는 다음과 같습니다. 🎜🎜rrreee🎜출력 결과: 🎜🎜🎜PHP 슈퍼 전역 변수를 얻는 방법(구성 및 공유)🎜🎜$GLOBALS는 함수 내에서만 사용되는 것이 아니라 프로그램 내 어디에서나 사용할 수 있습니다. 위의 예에서 볼 수 있듯이 전역 변수는 슈퍼 전역 변수가 되어 함수 내에서 정상적으로 접근이 가능합니다. 🎜🎜🎜🎜global🎜🎜🎜🎜$GLOBALS와 매우 유사한 global 키워드도 있습니다. 이를 통해 함수 내부에서 함수 외부에 정의된 전역 변수를 사용할 수도 있습니다. 🎜🎜구문 형식은 다음과 같습니다. 🎜rrreee🎜전역 키워드 뒤에는 여러 변수가 매개변수로 올 수 있으며, 여러 변수는 ","(쉼표)로 구분됩니다. 동시에 전역을 사용할 때 몇 가지 핵심 사항에 주의해야 합니다. 🎜🎜🎜🎜 전역 키워드는 함수 외부에서 사용할 수 없지만 🎜🎜🎜🎜 전역 키워드는 함수 내부에서만 사용할 수 있습니다. 함수 외부에서 전역 변수를 참조하는 데 사용됩니다. 참조 시 직접 할당은 허용되지 않으며 할당문과 선언문은 별도로 작성해야 합니다. 🎜🎜🎜🎜global 키워드로 수정된 변수가 함수 내부에서 소멸되면, 기능에는 영향을 미치지 않습니다. 🎜🎜🎜🎜예제는 다음과 같습니다. 🎜🎜rrreee🎜위 예에서는 3개의 변수가 정의되어 있는데, 전역 키워드는 함수에서 2개의 변수만 수정하는 것인데, 출력 결과에 어떤 영향을 미칠까요? 🎜🎜🎜출력 결과: 🎜🎜PHP 슈퍼 전역 변수를 얻는 방법(구성 및 공유) 🎜🎜결과적으로 변수 a, b만 출력되는 것을 알 수 있습니다. global 키워드는 함수 내 변수 2개만 수정했기 때문에 c 변수는 성공적으로 사용되지 않았습니다. 🎜🎜두 가지 예를 통해 $GLOBALS는 global과 비교하여 다음과 같은 차이점이 있음을 알 수 있습니다. 🎜🎜🎜🎜global $는 함수 외부에서 동일한 이름의 변수에 대한 참조를 참조하며, 이는 영향을 미치지 않는 두 변수입니다. $GLOBALS[]는 함수 외부 변수 자체인 변수를 참조합니다. 🎜🎜🎜🎜$GLOBALS는 함수 내부에만 국한되지 않고 프로그램 내 어디에서나 사용할 수 있습니다. 🎜🎜🎜🎜🎜🎜PHP $_SERVER🎜🎜🎜🎜🎜PHP $_SERVER는 정확하게 말하면 헤더 정보, 경로, 스크립트 위치 및 기타 정보를 포함하는 배열입니다. 이 배열의 항목은 웹 서버에 의해 생성됩니다. 서버는 일부를 무시할 수 있으며 모든 서버에서 모든 항목을 사용할 수 있는 것은 아닙니다. 🎜🎜PHP $_SERVER 사용 방법에 대한 예를 들어 보겠습니다. 🎜rrreee🎜결과 출력🎜🎜🎜PHP 슈퍼 전역 변수를 얻는 방법(구성 및 공유)🎜🎜 $_SERVER 변수의 더 중요한 요소를 공유하세요: 🎜🎜🎜🎜$_SERVER['PHP_SELF']---문서 루트와 관련된 현재 실행 중인 스크립트의 파일 이름입니다. 🎜🎜🎜🎜<code>$_SERVER['GATEWAY_INTERFACE']---서버에서 사용하는 CGI 사양 버전입니다. 🎜
  • $_SERVER['SERVER_ADDR']---스크립트가 현재 실행 중인 서버의 IP 주소입니다. $_SERVER['SERVER_ADDR']---当前运行脚本所在的服务器的 IP 地址。    

  • $_SERVER['SERVER_NAME']---当前运行脚本所在的服务器的主机名。

  • $_SERVER['SERVER_SOFTWARE']---服务器标识字符串,在响应请求时的头信息中给出。

  • $_SERVER['SERVER_PROTOCOL']---请求页面时通信协议的名称和版本。    

  • $_SERVER['REQUEST_METHOD']---访问页面使用的请求方法。    

  • $_SERVER['REQUEST_TIME']---请求开始时的时间戳。从 PHP 5.1.0 起可用。  

  • $_SERVER['QUERY_STRING']---query string(查询字符串),如果有的话,通过它进行页面访问。    

  • $_SERVER['HTTP_ACCEPT']---当前请求头中 Accept: 项的内容,如果存在的话。    

  • $_SERVER['HTTP_ACCEPT_CHARSET']---当前请求头中 Accept-Charset: 项的内容,如果存在的话。

  • $_SERVER['HTTP_HOST']---当前请求头中 Host: 项的内容,如果存在的话。    

  • $_SERVER['HTTP_REFERER']---引导用户代理到当前页的前一页的地址(如果存在)。 

  • $_SERVER['HTTPS']---如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。    

  • $_SERVER['REMOTE_ADDR']---浏览当前页面的用户的 IP 地址。    

  • $_SERVER['REMOTE_HOST']---浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。    

  • $_SERVER['REMOTE_PORT']---用户机器上连接到 Web 服务器所使用的端口号。    

  • $_SERVER['SCRIPT_FILENAME']---当前执行脚本的绝对路径。    

  • $_SERVER['SERVER_ADMIN']---该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。   

  • $_SERVER['SERVER_PORT']---Web 服务器使用的端口。默认值为 "80"。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。    

  • $_SERVER['SERVER_SIGNATURE']---包含了服务器版本和虚拟主机名的字符串。    

  • $_SERVER['PATH_TRANSLATED']---当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。    

  • $_SERVER['SCRIPT_NAME']---包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。    

  • $_SERVER['SCRIPT_URI']

$_SERVER['SERVER_NAME']---스크립트가 현재 실행 중인 서버의 호스트 이름입니다.

$_SERVER['SERVER_SOFTWARE']---요청에 응답할 때 헤더 정보에 제공되는 서버 식별 문자열입니다. 🎜🎜🎜🎜$_SERVER['SERVER_PROTOCOL']---페이지 요청 시 통신 프로토콜의 이름과 버전.​ 🎜🎜🎜🎜$_SERVER['REQUEST_METHOD']---페이지에 액세스하는 데 사용되는 요청 방법입니다. 🎜🎜🎜🎜$_SERVER['REQUEST_TIME']---요청이 시작된 타임스탬프입니다. PHP 5.1.0부터 사용 가능합니다. 🎜🎜🎜🎜$_SERVER['QUERY_STRING']---쿼리 문자열(쿼리 문자열)이 있는 경우 이를 사용하여 페이지에 액세스합니다. 🎜🎜🎜🎜$_SERVER['HTTP_ACCEPT']---현재 요청 헤더에 Accept: 항목이 있는 경우 항목의 내용입니다. 🎜🎜🎜🎜$_SERVER['HTTP_ACCEPT_CHARSET']---현재 요청 헤더에 Accept-Charset: 항목의 내용(있는 경우). 🎜🎜🎜🎜$_SERVER['HTTP_HOST']---현재 요청 헤더에 Host: 항목의 콘텐츠(존재하는 경우).​ 🎜🎜🎜🎜$_SERVER['HTTP_REFERER']---현재 페이지의 이전 페이지 주소(존재하는 경우)로 사용자 에이전트를 연결합니다. 🎜🎜🎜🎜$_SERVER['HTTPS']---HTTPS 프로토콜을 통해 스크립트에 액세스하는 경우 비어 있지 않은 값으로 설정됩니다. 🎜🎜🎜🎜$_SERVER['REMOTE_ADDR']---현재 페이지를 탐색하는 사용자의 IP 주소. 🎜🎜🎜🎜$_SERVER['REMOTE_HOST']---현재 페이지를 탐색하는 사용자의 호스트 이름입니다. DNS 역방향 확인은 사용자의 REMOTE_ADDR에 의존하지 않습니다. 🎜🎜🎜🎜$_SERVER['REMOTE_PORT']---웹 서버에 연결하기 위해 사용자 컴퓨터에서 사용되는 포트 번호입니다. 🎜🎜🎜🎜$_SERVER['SCRIPT_FILENAME']---현재 실행 중인 스크립트의 절대 경로입니다. 🎜🎜🎜🎜$_SERVER['SERVER_ADMIN']---이 값은 Apache 서버 구성 파일의 SERVER_ADMIN 매개변수를 지정합니다. 스크립트가 가상 호스트에서 실행 중인 경우 이 값은 해당 가상 호스트의 값입니다. 🎜🎜🎜🎜$_SERVER['SERVER_PORT']---웹 서버에서 사용하는 포트입니다. 기본값은 "80"입니다. SSL 보안 연결을 사용하는 경우 이 값은 사용자가 설정한 HTTP 포트입니다. 🎜🎜🎜🎜$_SERVER['SERVER_SIGNATURE']---서버 버전과 가상 호스트 이름이 포함된 문자열입니다. 🎜🎜🎜🎜$_SERVER['PATH_TRANSLATED']---현재 스크립트가 있는 파일 시스템의 기본 경로(문서 루트 디렉터리 아님)입니다. 이는 서버를 가상 경로에서 실제 경로로 이미지화한 후의 결과입니다. 🎜🎜🎜🎜$_SERVER['SCRIPT_NAME']---현재 스크립트의 경로가 포함되어 있습니다. 이는 페이지가 자신을 가리켜야 할 때 유용합니다. __FILE__ 상수에는 현재 스크립트(예: 포함 파일)의 전체 경로와 파일 이름이 포함됩니다. 🎜🎜🎜🎜$_SERVER['SCRIPT_URI']---URI는 액세스할 페이지를 지정하는 데 사용됩니다. 예를 들어 "/index.html"입니다. 🎜🎜🎜🎜추천 학습: "🎜PHP 비디오 튜토리얼🎜"🎜

위 내용은 PHP 슈퍼 전역 변수를 얻는 방법(구성 및 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.