1
2
3
4
5
6
7
8
9
10
11

$_POST和$_GET數組

發(fā)布時間:2017-07-20 08:01   發(fā)布人:毛書朋   浏覽次數:7128


關聯課件:6子項目六 -$_POST和$_GET數組(點擊在線預覽)



6.3.2  $_POST和$_GET數組

       網頁中的數據傳遞中不外乎兩(liǎng)種(zhǒng)方式,一種(zhǒng)是接收表單數據(也稱爲POST方法),另一種(zhǒng)是接收URL附加數據(也稱爲GET方法)。下面(miàn)對(duì)這(zhè)兩(liǎng)種(zhǒng)方式進(jìn)行介紹。

6.3.2.1  用$_POST接收表單數據

     先來分析一下程序6-1.php的源文件。

1:  <!--文件6-1.php:表單數據傳遞-->

2:  <HTML>

3:      <HEAD>

4:       <TITLE>表單數據傳遞</TITLE>

5:      </HEAD>

6:      <BODY>

7:          <?php

8:              $tag=$_POST["tag"];

9:              if ($tag==1){

10:                   $addend1=$_POST["addend1"];

11:                   $addend2=$_POST["addend2"];

12:          }

else{

13:                  $addend1=0;

14:                  $addend2=0;

15:              }

16:           $sum=$addend1 $addend2;

17:         ?>

18:        //請在下面(miàn)的表單中輸入兩(liǎng)數以求其和

19:        <form name="form1" method="post" action="#">

20:          <input type="hidden" name="tag" size="4" value="1">

21:          <input type="text" name="addend1" size="4" value="<?php echo $addend1;?>">

22:          

23:          <input type="text" name="addend2" size="4" value="<?php echo

$addend2;?>">

24:        =

25:        <?php echo $sum;?><br>

26:        <br><input type="submit" name="button1" value="計算">

27:        <input type="reset" name="button2" value="重置">

28:        </form>

29:     </BODY>

30:  </HTML>

      從程序6-1.php中不難發(fā)現,除了第7行到17行其餘代碼都(dōu)不是PHP的程序,而是HTML中的表單代碼,其中第20行是一個初始值爲1的隐藏表單,它在浏覽器中是不顯示的,但是也可以随着“計算”按鈕的提交而傳遞數據,接收後(hòu)用以來判斷當前執行的頁面(miàn)是提交前的頁面(miàn)還(hái)是提交後(hòu)的頁面(miàn)。注意,隐藏表單在網頁中是非常重要而且應用十分廣泛。程序的第7行到第17行是程序的主要部分,先用POST方法接收隐藏表單的數據,然後(hòu)判斷如果爲1,也就是單擊過(guò)“計算”之後(hòu)的執行的頁面(miàn),就接收兩(liǎng)個加數,否則,就兩(liǎng)個加數均初始化爲0,第16行則是計算兩(liǎng)個加數的和。

      如果沒(méi)有輸入數據時,也就是初次浏覽時,其運行結果如圖6-1(a)所示。

     當在兩(liǎng)個表單裡(lǐ)輸入“88”和“66”兩(liǎng)個數值并單擊“計算”按鈕後(hòu),其運行結果如圖6-1(b)所示。

6-1.1.jpg

(a)初次浏覽的頁面(miàn)     

6-1.2.jpg

(b)輸入數據并單擊“計算”按鈕後(hòu)的效果

6.3.2.2  用$_GET接收URL附加數據      

接下來看一下URL附加數據時怎麼(me)接收的如程序6-2.php所示。

1:  <!--文件6-2.php:URL附加數據傳遞-->

2:  <HTML>

3:      <HEAD>

4:       <TITLE>URL附加數據傳遞</TITLE>

5:      </HEAD>

6:      <BODY>

7:      <a href="6-2.php?show_tag=1">顯示圖片</a>

8:      <a href="?show_tag=2">隐藏圖片</a><br><br>

9:         <?php

10:            $show_tag=$_GET["show_tag"];

11:            if ($show_tag==1){

12:            echo "<img src=php.gif width=120 height=67>";

13:            }

14:       ?>

15:     </BODY>

16:  </HTML>

       程序6-2.php的第7行和第8行均爲HTML中的超級鏈接,但有所不同的是,第7行鏈接到文件“6-2.php”并附加數據“show_tag=1”,第8行鏈接到本頁文件并附加數據“show_tag=1”,其實這(zhè)兩(liǎng)行運行的最終效果是一樣的。第10行是接收URL附件數據的具體方法。第11行到第13行是如果接受過(guò)來的URL的附件數據爲“1”時輸出顯示圖片的HTML代碼,即顯示圖片。

       運行6-2.php時,其運行結果如圖6-2(a)所示。

       單擊“顯示圖片”時,其運行效果如圖6-2(b)所示。

       單擊“隐藏圖片”時,其運行效果如圖6-2(c)所示。

6-2.1.png

(a)初次浏覽頁面(miàn)時的運行結果的運行結果

6-2.2.jpg

(b)單擊“顯示圖片”時的運行結果

6-2.3.jpg

(c)單擊“隐藏圖片”時的運行結果

       程序6-2.php中隻傳遞了一個數據,如果要傳遞多個數據應該如何做呢?隻需要把第7行的“6-2.php? show_tag=1”代碼改寫成(chéng)如“6-2.php? show_tag=1&date_name=date”的代碼,就可以傳遞兩(liǎng)個數據了,也就是說在傳遞多個數據的時候要用“&”進(jìn)行連接或分割。

       通過(guò)上面(miàn)的兩(liǎng)個例子,不難發(fā)現兩(liǎng)種(zhǒng)數據傳遞方法的不同點:GET方法可以在地址欄中顯示出來,也就是比較暴露,存在着安全隐患,而POST方法則比較隐蔽,特别是隐藏表單的使用,不僅可以增加程序的安全性,還(hái)可以傳遞一些不需要用戶輸入或不能(néng)讓用戶更改的貫穿若幹個網頁的量值。



  • 王春雷 2018-01-07 17:03:09
    GET和POST是由HTTP協議定義的。在HTTP協議中,Method和Data(URL, Body, Header)是正交的兩(liǎng)個概念,也就是說,使用哪個Method與應用層的數據如何傳輸是沒(méi)有相互關系的。
  • 馬文琦 2018-01-09 16:18:25
    GET方法可以在地址欄中顯示出來,POST就相對(duì)隐蔽
  • 甄丹丹 2018-01-09 16:36:00
    GET方法可以在地址欄中顯示出來,也就是比較暴露,存在着安全隐患,而POST方法則比較隐蔽,特别是隐藏表單的使用,不僅可以增加程序的安全性,還(hái)可以傳遞一些不需要用戶輸入或不能(néng)讓用戶更改的貫穿若幹個網頁的量值
  • 潘龍飛 2018-01-09 17:57:29
    講解到位,很好(hǎo),,
  • 班榮芳 2018-01-10 12:04:16
    GET方法可以在地址欄中顯示出來,POST就相對(duì)隐蔽