Maison  >  Article  >  développement back-end  >  Comment obtenir des variables super globales PHP (organisées et partagées)

Comment obtenir des variables super globales PHP (organisées et partagées)

WBOY
WBOYoriginal
2021-10-15 18:16:333481parcourir

Dans l'article précédent, je vous ai présenté "Comprendre les fonctions anonymes PHP en cinq minutes (exemples détaillés)". Cet article présente en détail les connaissances pertinentes sur les fonctions anonymes en PHP. regardez les problèmes liés aux variables super globales qui peuvent être référencées dans les fonctions, j'espère que cela sera utile à tout le monde !

Comment obtenir des variables super globales PHP (organisées et partagées)

Variables super globales PHP

Les variables globales définies en dehors de la fonction ne peuvent pas être référencées à l'intérieur de la fonction, mais il est parfois nécessaire d'utiliser ces variables globales dans la fonction. Dans ce cas, des super globales sont utilisées. et les variables super globales peuvent être référencées dans les fonctions.

Plusieurs variables super globales sont prédéfinies en PHP, ce qui signifie qu'elles peuvent être référencées dans toutes les portées d'un script. Sans instructions spéciales, les variables super globales peuvent être utilisées dans les fonctions et les classes.

Variables super globales PHP :

  • $GLOBALS

  • $_SERVER

  • $_REQUEST

  • $_POST

  • $_GET

  • $_FILES

  • $ _ENV

  • $_COOKIE

  • $_SESSION

Aujourd'hui, nous examinerons quelques variables super globales qui sont couramment utilisées au quotidien. Ensuite, nous examinerons quelques exemples de ces variables super globales. . Quelques usages et fonctionnalités.

Tout d'abord, jetons un coup d'oeil :

PHP $GLOBALS

$GLOBALS est un tableau superglobal prédéfini qui contient toutes les variables disponibles dans la portée globale, le nom de la variable est la clé du tableau. $GLOBALS est accessible depuis toute la portée d'un script 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; 
?>

输出结果:

Comment obtenir des variables super globales PHP (organisées et partagées)

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

输出结果:

Comment obtenir des variables super globales PHP (organisées et partagées)

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

输出结果

Comment obtenir des variables super globales PHP (organisées et partagées)

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

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

  • $_SERVER['GATEWAY_INTERFACE']

    L'exemple est le suivant : 🎜🎜rrreee🎜Résultat de sortie : 🎜🎜🎜Comment obtenir des variables super globales PHP (organisées et partagées)🎜🎜$GLOBALS ne se limite pas à être utilisé dans une fonction et peut être utilisé n'importe où dans le programme. Comme le montre l'exemple ci-dessus, les variables globales deviennent des variables super globales, de sorte qu'elles sont accessibles normalement dans la fonction. 🎜🎜🎜🎜global🎜🎜🎜🎜Il existe également un mot-clé global qui est très similaire à $GLOBALS. Il nous permet également d'utiliser des variables globales définies en dehors de la fonction à l'intérieur de la fonction. 🎜🎜Le format de syntaxe est le suivant : 🎜rrreee🎜le mot-clé global peut être suivi de plusieurs variables en tant que paramètres, et plusieurs variables sont séparées par "," (virgule). Dans le même temps, vous devez faire attention à certains points clés lors de l'utilisation de global : le mot-clé 🎜🎜🎜🎜global ne peut pas être utilisé en dehors de la fonction, mais ne peut être utilisé qu'à l'intérieur de la fonction ; utilisé pour faire référence à des variables globales en dehors de la fonction. L'affectation directe n'est pas autorisée lors du référencement, et les instructions d'affectation et de déclaration doivent être écrites séparément 🎜🎜🎜🎜Lorsqu'une variable modifiée avec le mot-clé global est détruite à l'intérieur d'une fonction, les variables en dehors de la fonction. la fonction ne sont pas affectées. 🎜🎜🎜🎜L'exemple est le suivant : 🎜🎜rrreee🎜Dans l'exemple ci-dessus, trois variables sont définies, mais le mot-clé global ne modifie que deux variables dans la fonction. Quel impact cela aura-t-il sur le résultat de sortie ? 🎜🎜🎜Résultat de sortie : 🎜🎜Comment obtenir des variables super globales PHP (organisées et partagées) 🎜🎜On peut voir que le résultat ne génère que les variables a et b. Étant donné que le mot-clé global n'a modifié que deux variables dans la fonction, la variable c n'a pas été utilisée avec succès. 🎜🎜À travers deux exemples, nous pouvons voir que par rapport à global, $GLOBALS présente les différences suivantes : 🎜🎜🎜🎜global $ fait référence à une référence à une variable du même nom en dehors de la fonction, qui est deux variables qui n'affectent pas les uns les autres, et $GLOBALS[] fait référence à la variable externe de fonction elle-même, qui est une variable. 🎜🎜🎜🎜$GLOBALS ne se limite pas à être utilisé dans une fonction et peut être utilisé n'importe où dans le programme. 🎜🎜🎜🎜🎜🎜PHP $_SERVER🎜🎜🎜🎜🎜PHP $_SERVER est un tableau pour être précis, $_SERVER contient des informations d'en-tête, un chemin, un emplacement de script et d'autres informations. Les éléments de ce tableau sont créés par le serveur Web. Les serveurs peuvent en ignorer certains, et tous les éléments peuvent ne pas être disponibles sur chaque serveur. 🎜🎜Permettez-moi de vous donner un exemple d'utilisation de PHP $_SERVER : 🎜rrreee🎜Résultats de sortie🎜🎜🎜Comment obtenir des variables super globales PHP (organisées et partagées)🎜🎜 Partagez avec vous des éléments plus importants dans la variable $_SERVER : 🎜🎜🎜🎜$_SERVER['PHP_SELF']---Le nom de fichier du script en cours d'exécution, lié à la racine du document. 🎜🎜🎜🎜<code>$_SERVER['GATEWAY_INTERFACE']---La version de la spécification CGI utilisée par le serveur. 🎜
  • $_SERVER['SERVER_ADDR']---L'adresse IP du serveur sur lequel le script est actuellement en cours d'exécution. $_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']---Le nom d'hôte du serveur sur lequel le script est actuellement en cours d'exécution.

$_SERVER['SERVER_SOFTWARE']---Chaîne d'identification du serveur, donnée dans les informations d'en-tête lors de la réponse à la requête. 🎜🎜🎜🎜$_SERVER['SERVER_PROTOCOL']---Le nom et la version du protocole de communication lors de la demande de la page.​ 🎜🎜🎜🎜$_SERVER['REQUEST_METHOD']---La méthode de requête utilisée pour accéder à la page. 🎜🎜🎜🎜$_SERVER['REQUEST_TIME']---L'horodatage du début de la requête. Disponible depuis PHP 5.1.0. 🎜🎜🎜🎜$_SERVER['QUERY_STRING']---chaîne de requête (chaîne de requête), le cas échéant, utilisez-la pour accéder à la page. 🎜🎜🎜🎜$_SERVER['HTTP_ACCEPT']---Le contenu de l'élément Accept: dans l'en-tête de la requête actuelle, s'il existe. 🎜🎜🎜🎜$_SERVER['HTTP_ACCEPT_CHARSET']---Le contenu de l'élément Accept-Charset: dans l'en-tête de la requête actuelle, s'il existe. 🎜🎜🎜🎜$_SERVER['HTTP_HOST']---Le contenu de l'élément Host: dans l'en-tête de la requête actuelle, s'il existe.​ 🎜🎜🎜🎜$_SERVER['HTTP_REFERER']---Diriger l'agent utilisateur vers l'adresse de la page précédente de la page courante (si elle existe). 🎜🎜🎜🎜$_SERVER['HTTPS']---Si le script est accessible via le protocole HTTPS, il est défini sur une valeur non vide. 🎜🎜🎜🎜$_SERVER['REMOTE_ADDR']---L'adresse IP de l'utilisateur parcourant la page actuelle. 🎜🎜🎜🎜$_SERVER['REMOTE_HOST']---Le nom d'hôte de l'utilisateur parcourant la page actuelle. La résolution inversée DNS ne dépend pas du REMOTE_ADDR de l'utilisateur. 🎜🎜🎜🎜$_SERVER['REMOTE_PORT']---Le numéro de port utilisé sur la machine de l'utilisateur pour se connecter au serveur Web. 🎜🎜🎜🎜$_SERVER['SCRIPT_FILENAME']---Le chemin absolu du script en cours d'exécution. 🎜🎜🎜🎜$_SERVER['SERVER_ADMIN']---Cette valeur spécifie le paramètre SERVER_ADMIN dans le fichier de configuration du serveur Apache. Si le script s'exécute sur un hôte virtuel, cette valeur est celle de cet hôte virtuel. 🎜🎜🎜🎜$_SERVER['SERVER_PORT']---Le port utilisé par le serveur Web. La valeur par défaut est "80". Si vous utilisez une connexion sécurisée SSL, cette valeur est le port HTTP défini par l'utilisateur. 🎜🎜🎜🎜$_SERVER['SERVER_SIGNATURE']---Une chaîne contenant la version du serveur et le nom d'hôte virtuel. 🎜🎜🎜🎜$_SERVER['PATH_TRANSLATED']---Le chemin de base du système de fichiers (pas le répertoire racine du document) où se trouve le script actuel. C'est le résultat une fois que le serveur a été imagé d'un chemin virtuel vers un chemin réel. 🎜🎜🎜🎜$_SERVER['SCRIPT_NAME']---Contient le chemin du script actuel. Ceci est utile lorsque la page doit pointer vers elle-même. La constante __FILE__ contient le chemin complet et le nom de fichier du script actuel (comme un fichier d'inclusion). 🎜🎜🎜🎜$_SERVER['SCRIPT_URI']---URI est utilisé pour spécifier la page à accéder. Par exemple "/index.html". 🎜🎜🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn