首頁 >後端開發 >PHP問題 >php中$_get和$_post怎麼用

php中$_get和$_post怎麼用

青灯夜游
青灯夜游原創
2021-07-26 19:31:513705瀏覽

在php中,「$_get」用於收集來自「method="get"」的表單中的值,即接收form表單中使用GET方法提交的表單資料;「$_post」用於收集來自「method="post"」的表單中的數值,即取得由POST請求發送的表單資料。

php中$_get和$_post怎麼用

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

在PHP 中使用get 和post 兩種方法接收來自form 表單的值,在form 表單中可以定義PHP 的接收方式和接收位址。

get 和 post 方法主要有以下幾點差異。

  • get 是把參數資料佇列加入到提交表單的 action 屬性所指的 URL 中,值和表單內各個欄位一一對應,在 URL 中可以看到。 post 是透過 HTTP post 機制將表單內各個欄位與其內容放置在 HTML HEADER 內一起傳送到 action 屬性所指的 URL 位址,使用者看不到這個過程。

  • get 傳送的資料量較小,且不能大於 2KB,這主要是因為受 URL 長度限制。 post 傳送的資料量較大,一般預設為不受限制。

  • get 安全性非常低,post 安全性較高,但 get 執行效率卻比 post 方法好。

  • get 是 form 的預設方法。

建議在傳輸的資料包含機密資訊時用 post 資料提交方式,在做資料查詢時用 get 方式,在做資料新增、修改或刪除時用 post 方式。

$_POST全域變數

POST 方法不依賴 URL,不會將傳遞的參數值顯示在網址列中。另外 POST 方法可以沒有限制地傳遞資料到伺服器,所有提交的資訊在後台傳輸,使用者在瀏覽器端是看不到這一過程的,安全性相對較高。所以,POST 方法比較適合用來傳送一些重要的(如信用卡號)資訊或比較大量的資料到伺服器。

提示:預設情況下 POST 方法的傳送訊息最大值為 8MB,後期可以透過修改 php.ini 設定檔中 post_max_size 的值來變更。

而 PHP 的 $_POST 全域變數則是專門用來取得由 POST 請求所傳送的表單資料的。其資料結構為關聯數組,數組的鍵名為表單元素 name 的值,數組的值為對應表單的值。在實際程式開發過程中,當 form 表單的 method 屬性指定使用 POST 方式進行資料傳遞時,我們就應該使用 $_POST 來取得比表單的資料。

$_POST 全域變數的使用與普通數組是一樣,可以直接以$_POST['鍵值']的形式存取其中的數據,下面透過一個簡單的範例來示範。

【範例】使用 $_POST 全域變數取得 form 表單中傳輸的資料。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
    <form action="index.php" method="post">
        姓名:<input type="text" name="name" placeholder="请输入姓名"><br>
        性别:<input type="radio" name="sex" value="男">男
              <input type="radio" name="sex" value="女">女<br>
        爱好:<input type="checkbox" name="hobby[]" value="read">阅读
              <input type="checkbox" name="hobby[]" value="travel">旅游
              <input type="checkbox" name="hobby[]" value="sport">运动
              <input type="checkbox" name="hobby[]" value="internet">上网<br>
        职业:<select name="job">
                    <option value="coder">程序员</option>
                    <option value="teacher">教师</option>
                    <option value="doctor">医生</option>
                    <option value="other">其它</option>
              </select><br>
        <input type="submit" value="提交">&emsp;&emsp;<input type="reset" value="重置">
    </form>
</body>
</html>
<?php
    if(!empty($_POST)){
        echo &#39;提交成功!<br><pre class="brush:php;toolbar:false">&#39;;
        var_dump($_POST);
    }
?>

執行上面的程式碼,並在輸入框中填入適當的訊息,點擊提交按鈕即可將表單中填入的資訊傳遞給 PHP 程式。然後 PHP 程式可以透過 $_POST 來接收表單中傳遞訊息,並對這些訊息進行處理,例如可以將資料儲存到資料庫或輸出到瀏覽器等等,詳細程式碼就不示範了,大家可以自行動手嘗試。

$_GET全域變數

$_GET 全域變數與前面介紹的$_POST 全域變數類似,它是用來接收form 表單中使用GET 方法提交的表單資料的,GET 方法是form 表單中method 屬性的預設方法。使用 GET 方法提交的表單資料會附加到 URL 上,並作為 URL 的一部分傳送到伺服器端。

在程式的開發過程中,由於GET 方法提交的資料是附加到URL 上發送的,因此在URL 的網址列中將會顯示「URL 使用者傳遞的參數」類型的信息,如下所顯示:

http://url?name1=value1&name2=value2 ...

其中,url 為表單回應位址(如http://c.biancheng.net),name1、name2 為表單元素的名稱,value1、value2 為表單元素的值。 url和表單元素之間以“?”隔開,而多個表單元素之間用“&”隔開,每個表單元素的格式都是“name=value”,固定不變。

由於不同的瀏覽器對URL 的長度都有不同的限制,所以在使用GET 方法提交數據時,一定要注意數據量的大小,如果數據的長度超過了瀏覽器的限制,數據將被截斷,從而導致資料遺失。主流瀏覽器對URL 長度的限制如下表所示:

遊覽器 最大長度(字元數)
#Internet Explorer 2083 
#Firefox  65536
chrome 8182
Safari 80000
Opera 190000
#

$_GET 全局变量与 $_POST 的结构相似,同样是一个关联数组,数组的键名为表单元素 name 的值,数组的值为对应表单的值。$_GET 不仅仅可以获取 form 表单的数据,只要是 URL 中的参数都可以使用 $_GET 获取。

另外一点需要注意的是:在 PHP 中使用 $_POST 或者 $_GET 获取表单数据时,是区分大小写的,所以在开发过程中应该注意不能忽略了字母的大小写。

【示例】使用 $_GET 全局变量获取 form 表单中传输的数据。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
    <form action="index.php" method="get">
        姓名:<input type="text" name="name" placeholder="请输入姓名"><br>
        性别:<input type="radio" name="sex" value="男">男
              <input type="radio" name="sex" value="女">女<br>
        爱好:<input type="checkbox" name="hobby[]" value="read">阅读
              <input type="checkbox" name="hobby[]" value="travel">旅游
              <input type="checkbox" name="hobby[]" value="sport">运动
              <input type="checkbox" name="hobby[]" value="internet">上网<br>
        职业:<select name="job">
                    <option value="coder">程序员</option>
                    <option value="teacher">教师</option>
                    <option value="doctor">医生</option>
                    <option value="other">其它</option>
              </select><br>
        <input type="submit" value="提交">&emsp;&emsp;<input type="reset" value="重置">
    </form>
</body>
</html>
<?php
    if(!empty($_GET)){
        echo &#39;提交成功!<br><pre class="brush:php;toolbar:false">&#39;;
        var_dump($_GET);
    }
?>

推荐学习:《PHP视频教程

以上是php中$_get和$_post怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn