關聯課件: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)所示。
(a)初次浏覽的頁面(miàn)
(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)所示。
(a)初次浏覽頁面(miàn)時的運行結果的運行結果
(b)單擊“顯示圖片”時的運行結果
(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)讓用戶更改的貫穿若幹個網頁的量值。
GET和POST是由HTTP協議定義的。在HTTP協議中,Method和Data(URL, Body, Header)是正交的兩(liǎng)個概念,也就是說,使用哪個Method與應用層的數據如何傳輸是沒(méi)有相互關系的。
GET方法可以在地址欄中顯示出來,POST就相對(duì)隐蔽
GET方法可以在地址欄中顯示出來,也就是比較暴露,存在着安全隐患,而POST方法則比較隐蔽,特别是隐藏表單的使用,不僅可以增加程序的安全性,還(hái)可以傳遞一些不需要用戶輸入或不能(néng)讓用戶更改的貫穿若幹個網頁的量值
講解到位,很好(hǎo),,
GET方法可以在地址欄中顯示出來,POST就相對(duì)隐蔽