Maison > Article > développement back-end > Que sont les super variables globales en PHP ? Comment utiliser ?
Il existe certaines variables de tableau prédéfinies en PHP. Ces variables sont accessibles n'importe où dans le script à tout moment. Elles sont appelées variables super globales. Cet article vous présentera ces variables super globales et comprendra brièvement l'utilisation de ces variables. J'espère qu'il vous sera utile. [Recommandation du didacticiel vidéo : Tutoriel PHP]
Que sont les variables superglobales ?
Les variables super globales sont des variables de tableau intégrées et spécialement définies en PHP. Ils peuvent utiliser des variables super globales pour accéder aux informations à tout moment et n'importe où dans le script. Autrement dit, quelle que soit la portée, les informations sur la demande ou son contexte peuvent être facilement obtenues.
Les super variables globales sont accessibles à partir de n'importe quelle fonction, classe ou n'importe quel fichier sans effectuer de tâche spéciale comme déclarer une variable globale, etc. Ils servent principalement à stocker et récupérer des informations d’une page à une autre dans l’application.
Ce qui suit est une liste de variables superglobales disponibles en PHP :
● $ GLOBALS
● $ _ SERVER
Quantity $ _Request
● $ _get
● $ _Post
● $ _Session
● $ _Cookie
● $_FilesQuantity $ _ENVEnsuite, présentons en détail certaines des variables super globales.
$ GLOBALS
$ GLOBALS est une variable super globale qui stocke toutes les variables déclarées dans le script et peut être utilisée pour accéder n'importe où dans le script n’importe quelle variable. PHP stocke toutes les variables globales dans le tableau $GLOBALS[], ce tableau a un index qui contient le nom de la variable globale et est accessible en utilisant ce nom. Voyons comment utiliser $GLOBALS :<?php $x = 300; $y = 200; function multiplication(){ $GLOBALS['z'] = $GLOBALS['x'] * $GLOBALS['y']; } multiplication(); echo $z; ?>Dans le code ci-dessus, deux variables globales $x et $y sont déclarées et se voient attribuer les valeurs300 et 200. Définissez ensuite la fonction multiplication() pour multiplier et stocker les valeurs $x et $y dans une autre variable $z définie dans le tableau GLOBAL. Nous savons que les variables $x et $y ne seront pas accessibles dans la fonction multiplication() car elles n'y sont pas déclarées mais nous pouvons le faire en y accédant à l'aide de la variable tableau $GLOBALS. Lorsque la fonction square() est appelée, la multiplication des valeurs des variables $x et $y est effectuée ; elle peut alors être affichée directement. Le résultat de la multiplication obtenu car la variable $z existe également dans la variable du tableau $GLOBALS. Sortie :
$ _SERVER
$ _SERVER est un super global PHP Variables utilisées pour stocker des informations sur les en-têtes (en-têtes), les chemins et les emplacements de script, c'est-à-dire qu'elles stockent des informations sur le Web et ses requêtes. Certains de ces éléments sont utilisés pour obtenir des informations de la variable superglobale $_SERVER. De nombreux éléments d'information sont utilisés dans la variable $_SERVER. Certains d'entre eux sont répertoriés ci-dessous :下面我们就来看看如何使用$ _SERVER:
<?php echo $_SERVER['PHP_SELF']; echo "<br>"; echo $_SERVER['SERVER_NAME']; echo "<br>"; echo $_SERVER['HTTP_HOST']; echo "<br>"; echo $_SERVER['HTTP_USER_AGENT']; echo "<br>"; echo $_SERVER['SCRIPT_NAME']; echo "<br>" ?>
输出:
在上面的代码中,我们使用$ _SERVER元素来获取一些信息。我们使用'PHP_SELF'元素获取当前处理的文件名,使用'SERVER_NAME'元素获取当前使用的服务器名称,通过'HTTP_HOST'获取主机名。
$ _REQUEST
$ _REQUEST是一个超全局变量,用于在提交HTML表单后收集数据。$ _REQUEST主要不使用,因为$ _POST和$ _GET执行相同的任务并被广泛使用。
注:$ _REQUEST可能导致安全风险。
下面我们就来看看如何使用$ _REQUEST:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <div class="demo"> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 用户名: <input type="text" name="fname"> <button type="submit">提交</button> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = htmlspecialchars($_REQUEST['fname']); if(empty($name)){ echo "用户名为空"; } else { echo "用户名为:".$name; } } ?> </div> </body> </html>
效果图:
在上面的代码中,我们创建了一个表单,该表单将用户名作为输入,并在单击提交按钮时输出显示其名称。我们使用action属性中指定的$ _SERVER ['PHP_SELF']元素将表单中接受的数据传输到同一页面,因为我们使用PHP代码操作同一页面中的数据。使用$ _REQUEST超全局数组变量检索数据。
$ _POST
$ _POST是一个超级全局变量,用于在提交数据后从HTML表单收集数据,当用于传输数据的方法是“POST”时。
当表单使用方法post传输数据时,数据在查询字符串中不可见,即在此方法中保持安全级别。
下面我们就来看看如何使用$ _POST:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <div class="demo"> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> <label for="name">用户名: </label> <input name="name" type="text"><br> <label for="age">年龄: </label> <input name="age" type="number"><br> <input type="submit" value="提交"> </form> <?php $nm=$_POST['name']; $age=$_POST['age']; echo "<strong>姓名:".$nm.", ".$age."岁</strong>"; ?> </div> </body> </html>
在上面的代码中,我们创建了一个表单,该表单接受用户的名称和年龄,并在提交数据时使用$ _POST超级全局变量访问数据。
由于每个超全局变量都是一个数组,因此它可以存储多个值。因此,我们从$ _POST变量中检索名称和年龄,并将它们存储在$ nm和$ age变量中。
效果图:
$ _GET
$ _GET是一个超级全局变量,用于在提交数据后从HTML表单中收集数据。当表单使用“GET”方法获取传输数据时,数据在查询字符串中可见,因此不隐藏值。$ _GET超级全局数组变量存储URL中的值。
下面我们就来看看如何使用$ _GET:
<!DOCTYPE html> <html> <head> <title></title> </head> <body bgcolor="cyan"> <!--demonstration of $_GET--> <h1><font color="red">Historic Monument</font></h1> <a href="picture.php?name=QutubMinar&city=Delhi"><img src="qutubminar.jpg" alt="Qutubminar" style="max-width:90%" width="200"/></a> </body> </html>
我们实际上只看到了一半的逻辑,让我们理解上面的代码,然后看看其余的逻辑。
在上面的代码中,我们创建了一个QutubMinar的超链接图像,它将把我们带到picture.php页面,并带有参数名称=“QutubMinar”和city =“Delhi”。
也就是说,当我们点击QutubMinar的小图片时,我们将带到下一页picture.php以及参数。
由于默认方法是get,因此这些参数将使用get方法传递到下一页,它们将在地址栏中显示。
当我们想要将值传递给地址时,使用问号(?)将它们附加到地址。
然后将参数写为问号(?)后面的键值对,如以下语句中所指定:
<a href="picture.php?name=QutubMinar&city=Delhi"><img src="qutubminar.jpg" alt="Qutubminar" style="max-width:90%" width="200"/></a>
这里的参数name = QutubMinar会附加到地址。
如果我们想要添加更多值,我们可以在每个键值对之后使用&符号(&)添加它们,类似于在name参数之后使用&符号添加city = Delhi。
现在,在点击QutubMinar的图像之后,我们希望显示picture.php页面,并显示参数值。
所以让我们在picture.php页面中为它编写代码。
<head> <title>QutubMinar</title> </head> <body bgcolor="cyan"> <?php $nm=$_GET['name']; $city=$_GET['city']; echo "<h1> this is ".$nm." of ".$city."</h1><br><br>"; ?> <img src="qutubminar.jpg" alt="QutubMinar" style="max-width:90%" width="500"/> </body> </html>
在这里,我们使用超全局数组变量$ _GET接收参数name和city的值,并分别存储在变量$ nm和$ city中。
然后使用echo语句显示它们。
QutubMinar的放大图像如下所示。
首先让我们看一下index.php页面运行时的输出。
现在,当我们点击QutubMinar的超链接图像时,我们得到以下输出:
$ _SESSION
$ _SESSION是一个预定义的超全局数组变量,用于记住用户的状态以及他想要在整个会话中检索的值。
以前,对服务器的每个请求都是单独的请求。HTML是一种无状态协议。这意味着它无法记住网站中用户访问的页面。但今天我们使用网站,用户可以让网站记住访问过的网页或之前做过的事情,例如购物网站。
会话(SESSION)的设计原因与此相同;会话可以记住用户登录到注销期间的所有操作。
$ _SESSION数组变量用于存储来自任何页面的值,并在任何其他页面中检索它们,而不在URL中传递它们。
在存储任何变量之前,使用session_start()声明启动会话。
$ _COOKIE
$ _COOKIE是一个超级全局数组变量,用于检索cookie的值。
Cookie是由服务器创建的用于标识用户的小文件。每当用户在互联网上请求某些信息时,该请求就会发送到服务器。如果用户第一次连接到该服务器,则服务器识别他的信息并创建具有给用户的标识号的小文件,并将其附加到发送给用户的响应并存储在用户的计算机中。
在此之后,每当用户向该服务器发送请求时,它都携带cookie文件,由此服务器发送响应而不再检查服务器认证。
$ _FILES
$ _FILES是一个超级全局数组变量,用于将上载文件的信息提供给服务器。我们可以检查上传的文件是否已成功上传;也可以使用$ _FILES变量检索文件的详细信息。
$ _ENV
$ _ENV有助于从Web服务器获取/访问环境变量。
PHP中的环境变量是允许脚本从服务器动态获取某些信息的变量。它支持在不断变化的服务器环境中的脚本灵活性。
使用$ _ENV访问任何环境变量的语法如下:
$_ENV[“variable_name”];
例如,我们可以访问temp_pwd变量,如下所示:
<?php echo “Temporary Password: ”.$_ENV[“temp_pwd”]; ?>
总结:
在这些超级全局数组变量中,变量$ _GET,$ _POST,$ _ SERVER,$ _SESSION被最多使用。$ _REQUEST变量可以执行$ _GET,$ _POST和$ _COOKIE的工作,但需要避免使用它,因为它可能导致安全问题。
以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注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!