ホームページ  >  記事  >  バックエンド開発  >  PHPのスーパーグローバル変数とは何ですか?使い方?

PHPのスーパーグローバル変数とは何ですか?使い方?

青灯夜游
青灯夜游オリジナル
2019-02-13 16:49:447317ブラウズ

PHP には事前定義された配列変数がいくつかあります。これらの変数はいつでもスクリプト内のどこからでもアクセスできます。これらはスーパー グローバル変数と呼ばれます。この記事では、これらのスーパー グローバル変数を紹介し、これらの変数の使用法を簡単に理解します。 [ビデオチュートリアルの推奨: PHP チュートリアル]

PHPのスーパーグローバル変数とは何ですか?使い方?

スーパーグローバル変数とは何ですか?

スーパー グローバル変数は、PHP で特別に定義された組み込みの配列変数です。スーパー グローバル変数を使用すると、いつでもスクリプト内のどこからでも情報にアクセスできます。つまり、スコープに関係なく、リクエストまたはそのコンテキストに関する情報を簡単に取得できます。

スーパー グローバル変数には、グローバル変数の宣言などの特別なタスクを実行することなく、任意の関数、クラス、または任意のファイルからアクセスできます。これらは主に、アプリケーション内のあるページから別のページに情報を保存したり取得したりするために使用されます。

以下は、PHP で使用できるスーパーグローバル変数のリストです。

● $ GLOBALS

● $ _ SERVER

● $ _REQUEST

● $ _GET

● $ _POST

● $ _SESSION

● $ _COOKIE

● $ _FILES

● $ _ENV

次に、スーパー グローバル変数のいくつかを詳しく紹介します。

$ GLOBALS

$ GLOBALS は、スクリプト内で宣言されたすべての変数を格納するスーパー グローバル変数であり、スクリプト内の任意の場所にアクセスするために使用できます。スクリプトの任意の変数。

PHP はすべてのグローバル変数を配列 $GLOBALS[] に格納します。この配列にはグローバル変数名を保持するインデックスがあり、その名前を使用してアクセスできます。

$GLOBALS の使用方法を見てみましょう:

<?php 
$x = 300; 
$y = 200; 
  
function multiplication(){ 
    $GLOBALS[&#39;z&#39;] = $GLOBALS[&#39;x&#39;] * $GLOBALS[&#39;y&#39;]; 
} 
multiplication(); 
echo $z; 
?>

上記のコードでは、2 つのグローバル変数 $x と $y が宣言され、値 300 と 200 が割り当てられています。 。次に、関数 multiplication() を定義して、$x と $y の値を乗算し、GLOBAL 配列で定義された別の変数 $z に格納します。

変数 $x と $y は、関数 multiplication() 内で宣言されていないため、関数 multiplication() 内ではアクセスされないことがわかっていますが、$GLOBALS 配列変数を使用してアクセスすることでアクセスできます。

関数 square() を呼び出すと、変数 $x と $y の値の乗算が実行され、それを直接表示できます。

変数 $z が $GLOBALS 配列変数にも存在するため、得られる乗算結果。

出力:

PHPのスーパーグローバル変数とは何ですか?使い方?

$ _SERVER

$ _SERVER は PHP スーパー グローバルですタイトル (ヘッダー)、パス、スクリプトの場所に関する情報を格納する変数。つまり、Web とそのリクエストに関する情報を格納します。これらの要素の一部は、スーパーグローバル変数 $_SERVER から情報を取得するために使用されます。

$ _SERVER 変数では多くの情報要素が使用されます。それらの一部を以下に示します:

$ _ SERVER ['SERVER_ADDR']ホスト サーバーの IP アドレスを返します。 $ _ SERVER ['SERVER_NAME'] ホストサーバーの名前を返します。 $ _ SERVER ['QUERY_STRING'] クエリ文字列を介してページにアクセスした場合、クエリ文字列が返されます。 $ _ SERVER ['REQUEST_TIME'] リクエストが開始されたときのタイムスタンプを返します。 ######################

下面我们就来看看如何使用$ _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_USER_AGENT&#39;]; 
echo "<br>"; 
echo $_SERVER[&#39;SCRIPT_NAME&#39;]; 
echo "<br>"
?>

输出:

PHPのスーパーグローバル変数とは何ですか?使い方?

在上面的代码中,我们使用$ _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[&#39;PHP_SELF&#39;];?>"> 
 用户名: <input type="text" name="fname"> 
 <button type="submit">提交</button> 
</form> 
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $name = htmlspecialchars($_REQUEST[&#39;fname&#39;]); 
    if(empty($name)){ 
        echo "用户名为空"; 
    } else { 
        echo "用户名为:".$name; 
    } 
} 
?> 
</div>  
</body>   
</html>

效果图:

PHPのスーパーグローバル変数とは何ですか?使い方?

在上面的代码中,我们创建了一个表单,该表单将用户名作为输入,并在单击提交按钮时输出显示其名称。我们使用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[&#39;PHP_SELF&#39;];?>"> 
 <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[&#39;name&#39;]; 
$age=$_POST[&#39;age&#39;]; 
echo "<strong>姓名:".$nm.", ".$age."岁</strong>"; 
?> 
</div>  
</body>   
</html>

在上面的代码中,我们创建了一个表单,该表单接受用户的名称和年龄,并在提交数据时使用$ _POST超级全局变量访问数据。

由于每个超全局变量都是一个数组,因此它可以存储多个值。因此,我们从$ _POST变量中检索名称和年龄,并将它们存储在$ nm和$ age变量中。

效果图:

PHPのスーパーグローバル変数とは何ですか?使い方?

$ _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[&#39;name&#39;];
 $city=$_GET[&#39;city&#39;];
 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页面运行时的输出。

PHPのスーパーグローバル変数とは何ですか?使い方?

现在,当我们点击QutubMinar的超链接图像时,我们得到以下输出:

PHPのスーパーグローバル変数とは何ですか?使い方?

$ _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中文网相关教程栏目!!!

Component Description
$ _ SERVER [ 'PHP_SELF'] 現在実行中のスクリプトのファイル名を返します。

以上がPHPのスーパーグローバル変数とは何ですか?使い方?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。