Heim  >  Artikel  >  Backend-Entwicklung  >  So erhalten Sie superglobale PHP-Variablen (organisiert und gemeinsam genutzt)

So erhalten Sie superglobale PHP-Variablen (organisiert und gemeinsam genutzt)

WBOY
WBOYOriginal
2021-10-15 18:16:333472Durchsuche

Im vorherigen Artikel habe ich Ihnen „Anonyme PHP-Funktionen in fünf Minuten verstehen“ vorgestellt. Dieser Artikel stellt die relevanten Kenntnisse über anonyme Funktionen in PHP im Detail vor Schauen Sie sich die damit verbundenen Probleme zu superglobalen Variablen an, auf die in Funktionen verwiesen werden kann. Ich hoffe, dass es für alle hilfreich ist.

So erhalten Sie superglobale PHP-Variablen (organisiert und gemeinsam genutzt)

PHP-Superglobale Variablen

Globale Variablen, die außerhalb der Funktion definiert sind, können innerhalb der Funktion nicht referenziert werden, aber manchmal ist es notwendig, diese globalen Variablen innerhalb der Funktion zu verwenden. In diesem Fall werden Superglobale Variablen verwendet und superglobale Variablen können innerhalb von Funktionen referenziert werden.

Mehrere superglobale Variablen sind in PHP vordefiniert, was bedeutet, dass sie in allen Bereichen eines Skripts referenziert werden können. Ohne spezielle Anweisungen können superglobale Variablen in Funktionen und Klassen verwendet werden.

Super globale PHP-Variablen:

  • $GLOBALS

  • $_SERVER

  • $_REQUEST

  • $_POST

  • $_GET

  • $_FILES

  • $ _ENV

  • $_COOKIE

  • $_SESSION

Heute werfen wir einen Blick auf einige superglobale Variablen, die häufig im täglichen Gebrauch verwendet werden. Als nächstes werden wir uns einige Beispiele dieser superglobalen Variablen ansehen . Einige Verwendungszwecke und Funktionen.

Werfen wir zunächst einen Blick darauf:

PHP $GLOBALS

$GLOBALS ist ein vordefiniertes superglobales Array, das alle verfügbaren Variablen im globalen Bereich enthält. Der Name der Variablen lautet der Schlüssel des Arrays. Auf $GLOBALS kann über den gesamten Umfang eines PHP-Skripts zugegriffen werden.

$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; 
?>

输出结果:

So erhalten Sie superglobale PHP-Variablen (organisiert und gemeinsam genutzt)

$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关键字只修饰了两个变量,那输出结果会有什么影响呢?

输出结果:

So erhalten Sie superglobale PHP-Variablen (organisiert und gemeinsam genutzt)

可以看出,结果只输出了变量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;];
?>

输出结果

So erhalten Sie superglobale PHP-Variablen (organisiert und gemeinsam genutzt)

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

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

  • $_SERVER['GATEWAY_INTERFACE']Das Beispiel sieht wie folgt aus:

    🎜rrreee🎜Ausgabeergebnis: 🎜🎜🎜So erhalten Sie superglobale PHP-Variablen (organisiert und gemeinsam genutzt)🎜🎜$GLOBALS ist nicht auf die Verwendung innerhalb einer Funktion beschränkt und kann überall im Programm verwendet werden. Wie aus dem obigen Beispiel ersichtlich ist, werden globale Variablen zu superglobalen Variablen, sodass innerhalb der Funktion normal auf sie zugegriffen werden kann. 🎜🎜🎜🎜global🎜🎜🎜🎜Es gibt auch ein global-Schlüsselwort, das $GLOBALS sehr ähnlich ist. Es ermöglicht uns auch, globale Variablen zu verwenden, die außerhalb der Funktion innerhalb der Funktion definiert sind. 🎜🎜Das Syntaxformat ist wie folgt: Auf das Schlüsselwort 🎜rrreee🎜global können mehrere Variablen als Parameter folgen, und mehrere Variablen werden durch "," (Komma) getrennt. Gleichzeitig sollten Sie bei der Verwendung von global einige wichtige Punkte beachten: Das Schlüsselwort 🎜🎜🎜🎜global kann nicht außerhalb der Funktion verwendet werden, sondern nur innerhalb der Funktion Wird verwendet, um auf globale Variablen außerhalb der Funktion zu verweisen, und Zuweisungs- und Deklarationsanweisungen müssen separat geschrieben werden Funktion werden nicht beeinträchtigt. 🎜🎜🎜🎜Das Beispiel sieht wie folgt aus: 🎜🎜rrreee🎜Im obigen Beispiel sind drei Variablen definiert, aber das globale Schlüsselwort ändert nur zwei Variablen in der Funktion. Welche Auswirkung hat es auf das Ausgabeergebnis? 🎜🎜🎜Ausgabeergebnis: 🎜🎜So erhalten Sie superglobale PHP-Variablen (organisiert und gemeinsam genutzt) 🎜🎜Es ist ersichtlich, dass das Ergebnis nur die Variablen a und b ausgibt. Da das globale Schlüsselwort nur zwei Variablen innerhalb der Funktion geändert hat, wurde die Variable c nicht erfolgreich verwendet. 🎜🎜Anhand zweier Beispiele können wir sehen, dass $GLOBALS im Vergleich zu global die folgenden Unterschiede aufweist: 🎜🎜🎜🎜global $ bezieht sich auf einen Verweis auf eine Variable mit demselben Namen außerhalb der Funktion, bei der es sich um zwei Variablen handelt, die keinen Einfluss haben einander, und $GLOBALS[] bezieht sich auf die externe Funktionsvariable selbst, die eine Variable ist. 🎜🎜🎜🎜$GLOBALS ist nicht auf die Verwendung innerhalb einer Funktion beschränkt und kann überall im Programm verwendet werden. 🎜🎜🎜🎜🎜🎜PHP $_SERVER🎜🎜🎜🎜🎜PHP $_SERVER ist ein Array, um genau zu sein, $_SERVER enthält Header-Informationen, Pfad, Skriptspeicherort und andere Informationen. Die Elemente in diesem Array werden vom Webserver erstellt. Server ignorieren möglicherweise einige Elemente und möglicherweise sind nicht alle Elemente auf jedem Server verfügbar. 🎜🎜Lassen Sie mich Ihnen ein Beispiel für die Verwendung von PHP $_SERVER geben: 🎜rrreee🎜Ergebnisse ausgeben🎜🎜🎜So erhalten Sie superglobale PHP-Variablen (organisiert und gemeinsam genutzt)🎜🎜 Teilen Sie weitere wichtige Elemente in der Variablen $_SERVER: 🎜🎜🎜🎜$_SERVER['PHP_SELF']---Der Dateiname des aktuell ausgeführten Skripts, bezogen auf das Dokumentstammverzeichnis. 🎜🎜🎜🎜<code>$_SERVER['GATEWAY_INTERFACE']---Die vom Server verwendete Version der CGI-Spezifikation. 🎜
  • $_SERVER['SERVER_ADDR']---Die IP-Adresse des Servers, auf dem das Skript derzeit ausgeführt wird. $_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']---Der Hostname des Servers, auf dem das Skript derzeit ausgeführt wird.

$_SERVER['SERVER_SOFTWARE']---Server-Identifikationszeichenfolge, die in den Header-Informationen bei der Antwort auf die Anfrage angegeben wird. 🎜🎜🎜🎜$_SERVER['SERVER_PROTOCOL']---Der Name und die Version des Kommunikationsprotokolls beim Anfordern der Seite.​ 🎜🎜🎜🎜$_SERVER['REQUEST_METHOD']---Die Anforderungsmethode, die für den Zugriff auf die Seite verwendet wird. 🎜🎜🎜🎜$_SERVER['REQUEST_TIME']---Der Zeitstempel, als die Anfrage gestartet wurde. Verfügbar seit PHP 5.1.0. 🎜🎜🎜🎜$_SERVER['QUERY_STRING']---Abfragezeichenfolge (Abfragezeichenfolge), falls vorhanden, verwenden Sie diese, um auf die Seite zuzugreifen. 🎜🎜🎜🎜$_SERVER['HTTP_ACCEPT']---Der Inhalt des Accept:-Elements im aktuellen Anforderungsheader, falls vorhanden. 🎜🎜🎜🎜$_SERVER['HTTP_ACCEPT_CHARSET']---Der Inhalt des Accept-Charset:-Elements im aktuellen Anforderungsheader, falls vorhanden. 🎜🎜🎜🎜$_SERVER['HTTP_HOST']---Der Inhalt des Host:-Elements im aktuellen Anforderungsheader, falls vorhanden.​ 🎜🎜🎜🎜$_SERVER['HTTP_REFERER']---Leiten Sie den Benutzeragenten zur Adresse der vorherigen Seite der aktuellen Seite (falls vorhanden). 🎜🎜🎜🎜$_SERVER['HTTPS']---Wenn auf das Skript über das HTTPS-Protokoll zugegriffen wird, wird es auf einen nicht leeren Wert gesetzt. 🎜🎜🎜🎜$_SERVER['REMOTE_ADDR']---Die IP-Adresse des Benutzers, der die aktuelle Seite durchsucht. 🎜🎜🎜🎜$_SERVER['REMOTE_HOST']---Der Hostname des Benutzers, der die aktuelle Seite durchsucht. Die umgekehrte DNS-Auflösung hängt nicht von der REMOTE_ADDR des Benutzers ab. 🎜🎜🎜🎜$_SERVER['REMOTE_PORT']---Die Portnummer, die auf dem Computer des Benutzers für die Verbindung zum Webserver verwendet wird. 🎜🎜🎜🎜$_SERVER['SCRIPT_FILENAME']---Der absolute Pfad des aktuell ausgeführten Skripts. 🎜🎜🎜🎜$_SERVER['SERVER_ADMIN']---Dieser Wert gibt den Parameter SERVER_ADMIN in der Apache-Serverkonfigurationsdatei an. Wenn das Skript auf einem virtuellen Host ausgeführt wird, ist dieser Wert der Wert dieses virtuellen Hosts. 🎜🎜🎜🎜$_SERVER['SERVER_PORT']---Der vom Webserver verwendete Port. Der Standardwert ist „80“. Bei Verwendung einer sicheren SSL-Verbindung ist dieser Wert der vom Benutzer festgelegte HTTP-Port. 🎜🎜🎜🎜$_SERVER['SERVER_SIGNATURE']---Eine Zeichenfolge, die die Serverversion und den Namen des virtuellen Hosts enthält. 🎜🎜🎜🎜$_SERVER['PATH_TRANSLATED']---Der Basispfad des Dateisystems (nicht das Stammverzeichnis des Dokuments), in dem sich das aktuelle Skript befindet. Dies ist das Ergebnis, nachdem der Server von einem virtuellen auf einen realen Pfad abgebildet wurde. 🎜🎜🎜🎜$_SERVER['SCRIPT_NAME']---Enthält den Pfad des aktuellen Skripts. Dies ist nützlich, wenn die Seite auf sich selbst verweisen muss. Die Konstante __FILE__ enthält den vollständigen Pfad und Dateinamen des aktuellen Skripts (z. B. einer Include-Datei). 🎜🎜🎜🎜$_SERVER['SCRIPT_URI']---URI wird verwendet, um die Seite anzugeben, auf die zugegriffen werden soll. Zum Beispiel „/index.html“. 🎜🎜🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜

Das obige ist der detaillierte Inhalt vonSo erhalten Sie superglobale PHP-Variablen (organisiert und gemeinsam genutzt). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn