搜尋
首頁後端開發PHP問題php超全域變數有幾個

php超全域變數有幾個

Jul 08, 2021 pm 05:04 PM
php超全域變數

php超全域變數有9個,分別為:「$GLOBALS」、「$_SERVER」、「$_GET」、「$_POST」、「$_FILES」、「$_COOKIE」、「$_SESSION 」、「$_REQUEST」、「$_ENV」。

php超全域變數有幾個

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

PHP 中的許多預定義變數都是“超全域的”,這意味著它們在一個腳本的全部作用域中都可用。在函數或方法中無需執行 global $variable;就可以存取它們。

這些超全域變數是:

  • $GLOBALS

  • $_SERVER

  • $_GET

  • $_POST

  • #$_FILES

  • ##$_COOKIE

  • #$_SESSION

  • $_REQUEST

  • $_ENV

1. $_GET –> get 傳送方式

PHP $_GET 也可用來收集提交HTML 表單(method=”get”) 之後的表單資料。

$_GET 也可以收集 URL 中的發送的資料。

例如存取網址連結:

http://localhost/test_get.php?subject=PHP&web=W3school.com.cn

使用方式如下:

<html>
<body>
    <?php 
        echo "Study " . $_GET[&#39;subject&#39;] . " at " . $_GET[&#39;web&#39;];
    ?>
</body>
</html>

2. $_POST –> post 傳送方式

PHP $_POST 廣泛用於收集提交method=”post” 的HTML 表單後的表單資料。 $_POST 也常用於傳遞變數。

下面的範例展示了一個包含輸入欄位和提交按鈕的表單。當使用者點擊提交按鈕來提交資料後,表單資料會傳送到
標籤的 action 屬性中指定的檔案。在本例中,我們指定文件本身來處理表單資料。如果您希望使用另一個 PHP 頁面來處理表單數據,請使用變更為您選擇的檔案名稱。然後,我們可以使用超全域變數$_POST 來收集輸入欄位的值:

<html>
<body>
    <form method="post" action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>">
        Name: <input type="text" name="fname">
        <input type="submit">
    </form>

    <?php 
        $name = $_POST[&#39;fname&#39;]; 
        echo $name; 
    ?>
</body>
</html>

#3. $_REQUEST –> 可以接收到get 和post 兩種方式的值

PHP $_REQUEST 用於收集HTML 表單提交的資料。

下面的範例展示了一個包含輸入欄位及提交按鈕的表單。當使用者透過點擊提交按鈕來提交表單資料時, 表單資料將發送到 標籤的 action 屬性中指定的腳本檔案。在這個例子中,我們指定文件本身來處理表單資料。如果您需要使用其他的 PHP 檔案來處理表單數據,請修改為您選擇的檔案名稱即可。然後,我們可以使用超級全域變數$_REQUEST 來收集input 欄位的值:

<html>
<body>
    <form method="post" action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>">
        Name: <input type="text" name="fname">
        <input type="submit">
    </form>

    <?php 
        $name = $_REQUEST[&#39;fname&#39;]; 
        echo $name; 
    ?>
</body>
</html>

4. $GLOBALS –> 引用全域作用域中可用的全部變數

    $GLOBALS 這種全域變數用於在PHP 腳本中的任意位置存取全域變數(從函數或方法中均可)。
  • PHP 在名為 $GLOBALS[index] 的陣列中儲存了所有全域變數。變數的名字就是數組的鍵。
  • 主要用於在局部範圍不可以使用全域變數時,但又需要使用該全域變量,就使用$GLOBALS。
下面的範例展示如何使用超級全域變數$GLOBALS:

<?php 
    $x = 75; 
    $y = 25;

    function addition() { 
      $GLOBALS[&#39;z&#39;] = $GLOBALS[&#39;x&#39;] + $GLOBALS[&#39;y&#39;]; 
    }

    addition(); 
    echo $z; 
?>

5. $_FILES –> 上傳檔案使用

##$_FILES 主要用在當需要上傳二進位檔案的地方,錄入上傳一個abc.mp3文件,則伺服器端需要取得該文件的相​​關信息,則透過變數$_FILES 取得。 $_FILES 超級全域變數包含透過POST方法上傳到伺服器的資料的資訊。這個超級全域變數與其他的變數有所不同,它是一個二維數組,包含5個元素。 元素/程式碼##$ _FILES['userfile']['name']客戶端機器檔案的原名稱$_FILES['userfile']['type']
描述
###檔案的MIME 類型,需要瀏覽器提供該資訊的支持,例如「image/gif」#############$_FILES['userfile']['size']## ####已上傳檔案的大小,單位為位元組############$_FILES['userfile']['tmp_name']######檔案上傳後在服務端儲存的暫存檔案名稱############$_FILES['userfile']['error']#######和該檔案上傳相關的錯誤代碼。 [‘error’] 是在 PHP 4.2.0 版本中增加的。儘管這個變數的名為 error ,但實際上在成功的情況下也會填寫這個變數。它有五個可能的值:請參閱表格下方註解③############

注:
① 在 PHP 4.1.0 版本以前该数组的名称为 $HTTP_POST_FILES,它并不像 $_FILES 一样是自动全局变量。PHP 3 不支持 $HTTP_POST_FILES 数组。
② 如果表单中没有选择上传的文件,则 PHP 变量 $_FILES[‘userfile’][‘size’] 的值将为 0,$_FILES[‘userfile’][‘tmp_name’] 将为 none。
③ error字段5个错误码:

  • UPLOAD_ERR_OK 文件成功上传
  • UPLOAD_ERR_INI_SIZE 文件大小超出了
  • MAX_FILE_SIZE 指令所指定的最大值。
  • UPLOAD_ERR_FORM_SIZE 文件大小超出了MAX_FILE_SIZE 隐藏表单域参数(可选)指定的最大值。
  • UPLOAD_ERR_PARTIAL 文件只上传了一部分UPLOAD_ERR_NO_FILE 上传表单中没有指定文件

前端上传文件示例代码:

/**创建一个文件上传表单
允许用户从表单上传文件是非常有用的。
请看下面这个供上传文件的 HTML 表单:**/
<html>
<body>
    <form action="upload_file.php" method="post" enctype="multipart/form-data">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file" /> 
        <input type="submit" name="submit" value="Submit" />
    </form>
</body>
</html>

后端处理文件示例代码:

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

6. $_SERVER –> 系统环境变量

$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。

下面的例子展示了如何使用 $_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_REFERER&#39;];
    echo "<br>";
    echo $_SERVER[&#39;HTTP_USER_AGENT&#39;];
    echo "<br>";
    echo $_SERVER[&#39;SCRIPT_NAME&#39;];
?>

常用的字段:

元素/代码 描述
$_SERVER[‘PHP_SELF’] 返回当前执行脚本的文件名。
$_SERVER[‘GATEWAY_INTERFACE’] 返回服务器使用的 CGI 规范的版本。
$_SERVER[‘SERVER_ADDR’] 返回当前运行脚本所在的服务器的 IP 地址。
$_SERVER[‘SERVER_NAME’] 返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
$_SERVER[‘SERVER_SOFTWARE’] 返回服务器标识字符串(比如 Apache/2.2.24)。
$_SERVER[‘SERVER_PROTOCOL’] 返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
$_SERVER[‘REQUEST_METHOD’] 返回访问页面使用的请求方法(例如 POST)。
$_SERVER[‘REQUEST_TIME’] 返回请求开始时的时间戳(例如 1577687494)。
$_SERVER[‘QUERY_STRING’] 返回查询字符串,如果是通过查询字符串访问此页面。
$_SERVER[‘HTTP_ACCEPT’] 返回来自当前请求的请求头。
$_SERVER[‘HTTP_ACCEPT_CHARSET’] 返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)
$_SERVER[‘HTTP_HOST’] 返回来自当前请求的 Host 头。
$_SERVER[‘HTTP_REFERER’] 返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
$_SERVER[‘HTTPS’] 是否通过安全 HTTP 协议查询脚本。
$_SERVER[‘REMOTE_ADDR’] 返回浏览当前页面的用户的 IP 地址。
$_SERVER[‘REMOTE_HOST’] 返回浏览当前页面的用户的主机名。
$_SERVER[‘REMOTE_PORT’] 返回用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER[‘SCRIPT_FILENAME’] 返回当前执行脚本的绝对路径。
$_SERVER[‘SERVER_ADMIN’] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
$_SERVER[‘SERVER_PORT’] Web 服务器使用的端口。默认值为 “80”。
$_SERVER[‘SERVER_SIGNATURE’] 返回服务器版本和虚拟主机名。
$_SERVER[‘PATH_TRANSLATED’] 当前脚本所在文件系统(非文档根目录)的基本路径。
$_SERVER[‘SCRIPT_NAME’] 返回当前脚本的路径。
$_SERVER[‘SCRIPT_URI’] 返回当前页面的 URI。

7. $_SESSION –> 用于会话控制

PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。

  • 当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。
  • 通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。
  • Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

①开始 PHP Session :
在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 标签之前

<?php session_start(); ?>

<html>
<body>

</body>
</html>

②存储 和使用Session 变量:

<?php
session_start();
// store session data
$_SESSION[&#39;views&#39;]=1;
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION[&#39;views&#39;];
?>

</body>
</html>

③终结 Session
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。

//通过 unset() 函数用于释放指定的 session 变量:
<?php
unset($_SESSION[&#39;views&#39;]);
?>

//通过 session_destroy() 函数彻底终结 session:
<?php
session_destroy();
?>

注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

①创建 Cookie

//语法
setcookie(name, value, expire, path, domain);

//示例
<?php 
setcookie("user", "Alex Porter", time()+3600);
//创建名为 "user" 的 cookie,把为它赋值 "Alex Porter"。我们也规定了此 cookie 在一小时后过期
?>

<html>
<body>

</body>
</html>

②取回 Cookie 值

//示例a:取回了名为 "user" 的 cookie 的值,并把它显示在了页面上
<?php
// Print a cookie
echo $_COOKIE["user"];

// A way to view all cookies
print_r($_COOKIE);
?>

//示例b:使用 isset() 函数来确认是否已设置了 cookie
<html>
<body>

<?php
if (isset($_COOKIE["user"]))
  echo "Welcome " . $_COOKIE["user"] . "!<br />";
else
  echo "Welcome guest!<br />";
?>

</body>
</html>

9. $_ENV –> 服务器端环境变量

PHP中的$_ENV是一个包含服务器端环境变量的数组,不同系统不完全一样。
部分变量示例:
$_ENV[ ‘HOSTNAME’ ] 服务器的主机名
$_ENV[ ‘SHELL’ ] 系统 shell

$_ENV只是被动的接受服务器端的环境变量并把它们转换为数组元素,你可以尝试直接输出它:

//输出内容格式清晰,ThinkPHP可以直接用dump()
var_dump($_ENV);

//输出到屏幕
print_r($_ENV);

//输出key-value键值对
foreach($_ENV as $key=>$val){echo $key.&#39;--------&#39;.$val.&#39;<br>&#39;;}

推荐学习:《PHP视频教程

以上是php超全域變數有幾個的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
酸與基本數據庫:差異和何時使用。酸與基本數據庫:差異和何時使用。Mar 26, 2025 pm 04:19 PM

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

PHP安全文件上傳:防止與文件相關的漏洞。PHP安全文件上傳:防止與文件相關的漏洞。Mar 26, 2025 pm 04:18 PM

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

PHP輸入驗證:最佳實踐。PHP輸入驗證:最佳實踐。Mar 26, 2025 pm 04:17 PM

文章討論了PHP輸入驗證以增強安全性的最佳實踐,重點是使用內置功能,白名單方法和服務器端驗證等技術。

PHP API率限制:實施策略。PHP API率限制:實施策略。Mar 26, 2025 pm 04:16 PM

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

php密碼哈希:password_hash和password_verify。php密碼哈希:password_hash和password_verify。Mar 26, 2025 pm 04:15 PM

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

OWASP前10 php:描述並減輕常見漏洞。OWASP前10 php:描述並減輕常見漏洞。Mar 26, 2025 pm 04:13 PM

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。

PHP XSS預防:如何預防XSS。PHP XSS預防:如何預防XSS。Mar 26, 2025 pm 04:12 PM

本文討論了防止PHP中XSS攻擊的策略,專注於輸入消毒,輸出編碼以及使用安全增強的庫和框架。

PHP接口與抽像類:何時使用。PHP接口與抽像類:何時使用。Mar 26, 2025 pm 04:11 PM

本文討論了PHP中接口和抽像類的使用,重點是何時使用。界面定義了無實施的合同,適用於無關類和多重繼承。摘要類提供常見功能

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)