1. 程式人生 > >PHP-與Web頁面互動

PHP-與Web頁面互動

在PHP中提供了兩種與Web頁面互動的方法,一種是通過Web表單提交資料,另一種是通過URL引數傳遞。
Web表單主要用來在網頁中傳送到伺服器。
建立一個表單,再以POST方法提交到資料處理頁面check_ok.php
<form name="form1" method="post" action="check_ok.php">
</form>
使用POST方法提交表單
 
應用POST方法時,只需將<form>表單中的屬性method設定成POST即可。POST方法不依賴於URL,不會顯示在位址列。POST方法可以沒有限制的傳遞資料到伺服器,所有提交的資訊在後
臺傳輸。POST方法比較適合用於傳送一個保密的(信用卡號)或者容量較大的資料到伺服器。

使用GET方法提交表單
GET方法是<form>表單中method屬性的預設方法。使用GET方法提交的表單資料被附加到URL後,並作為URL的一部分發送到伺服器端。在URL的位址列中將會顯示"URL+使用者傳遞的引數"
GET方法的傳參格式如下:
http://url?name1=value1&name2=value2....

PHP引數傳遞常用的方法有3種:$_POST[],$_GET[],$_SESSION[].分別用於獲取表單,URL與Session變數的值。
$_POST[]全域性變數
使用PHP的$_POST[]預定義變數可以獲取表單元素的值,格式為:$_POST[name]
獲取表單元素
<?php
$user=$_POST["user"];
?>
在某些PHP版本中可以直接寫$user即可呼叫表單元素的值,這個php.ini的配置有關係。在php.ini檔案中檢索道register_glabals=ON/OFF這行程式碼,如果為ON,就可以直接寫出
$user。
$_GET[]全域性變數
PHP使用$_GET[]預定義變數獲取通過GET方法傳過來的值,使用格式為:
$_GET[name]
建立一個表單,設定method屬性為GET,新增一個文字框,命名user,獲取表單元素
<?php
$user=$_GET["user"]; // 應用$_GET[]全域性變數獲取表單元素文字框的值
?>
$_SESSION[]變數
使用$_SESSION[]變數可以獲取表單元素的值,格式為:
$_SESSION[name]
獲取表單元素的程式碼的格式如下;$user=$_SESSION["user"] 

在HTML標記中新增PHP指令碼
<?php
include("top.php");// 引用外部檔案
?> 
對錶單元素的value屬性進行賦值
<?php
$hidden="xx";
?>
隱藏域的值:<?php type="hidden" name="ID" value="<?php echo $hidden;?>">

在PHP中獲取表單資料
獲取文字框,密碼域,隱藏域,按鈕,文字域的值。
獲取表單資料,實際上就是獲取不同的表單元素的資料,在使用時需要使用name屬性來獲取相應的value屬性值。
新增的所有空間必須定義對應的name屬性值。
<?php
if($_POST["submit"]=="登入")
{// 判斷提交的按鈕名稱是否為"登入"
// 使用echo語句輸出使用$_POST[]方法獲取的使用者名稱和密碼
echo"你輸入的使用者名稱:".$_POST[user]."  ".$_POST[pwd];
}
?>
<pre name="code" class="html"><form action="" method="post" name="form1">
性別:<input name="sex" type="radio" value="1" checked>男
<input name="sex" type="radio" value="0"> 女
</form>
<?php
echo "你選擇的性別為:"
echo $_POST["sex"];
?>
獲取複選框的值
在<form>表單元素外的任意位置新增PHP標記符
<?php
if($_POST[mrbook]!=null){
echo "你選擇的結果是";
for($i = 0;$i < count($_POST[mrbook]);$i++)
echo $_POST[mrbook][$i]." ";
}
?>

在編寫PHP語句,通過$_POST[]q全域性變數獲取下拉列表框的值。
<?php
if($_POST[select]!="")
echo "你選擇的主題:<br>";
for($i=0;$i<count($_POST[select];$i++))
echo $_POST[select][$i]." ";
?>

編寫PHP語句,通過$_POST[]全域性變數獲取選單列表框的值,使用echo語句進行輸出。
<?php
if($_POST[submit]=="提交"){
echo "你選擇的意見主題為:".$_POST[select];// 輸出字串和選單列表的值
}
?>

檔案域有一個特有的屬性accept,用於制定與上傳的檔案的型別,如果需要限制上傳的檔案的型別,則可以通過設定該屬性完成。
<form name="form1" method="post" action="index.php">
<input type="file" name="file" size="15">
<input type="submit" name="upload" value="上傳">
</form>

<?php
echo $_POST[file];// 輸出要上傳檔案的絕對路徑
?>

對URL傳遞的引數進行編碼

使用URL引數傳遞資料,就是在URL地址後面加上適當的引數。URL實體對這些引數進行處理。
http://url?name1=value&name2=value2...
URL傳遞的引數(也稱為查詢字串)
這種方法會將引數暴露,URL編碼是一種瀏覽器用來打包表單輸入資料的格式,是對用位址列傳遞引數進行的一種編碼規則。
在PHP中對查詢字串進行URL編碼,可以通過urlencode()函式實現。
string urlencode(string str);
urlencode()函式實現將字串str進行URL編碼。
<a href="index.php?id=<?php echo urlencode("程式設計詞典");?>">PHP程式設計詞典</a>

對URL傳遞的引數進行解碼

對於URL傳遞的引數直接使用$_GET[]方法即可獲取。而對於進行URL加密的查詢字串,則需要通過urlencode()函式對獲取後的字串進行解碼。
string urldecode(string str)

urldecode()函式可將URL編碼後的str查詢字串進行解碼。
<a href="index.php"?id=<?php echo urlencode("程式設計詞典");?>>PHP程式設計詞典</a>
<?php echo "你提交的查詢字串的內容是:"urldecode($_GET[id]);?>