1. 程式人生 > 程式設計 >PHP與Web頁面互動操作例項分析

PHP與Web頁面互動操作例項分析

本文例項講述了PHP與Web頁面互動操作。分享給大家供大家參考,具體如下:

Web互動

1.Web表單互動

  • 當表單的method屬性提交方式為POST時,瀏覽器傳送POST請求
  • 當表單的method屬性提交方式為GET時,瀏覽器傳送GET請求
    當PHP收到來自瀏覽器提交的資料後,會自動儲存到超全域性變數中。

超全域性變數是PHP預定義好的變數,可以再PHP指令碼的任何位置使用

  • 常見的超全域性變數陣列變數有$ _POST、$_GET等
  • 通過POST方式提交的資料會儲存到$_POST中
  • 通過GET方式提交的資料會儲存到$_GET中

2.URL引數互動

當表單以GET方式提交時,會將使用者填寫的內容放在URL引數中進行提交。

表單的method屬性刪除(或將其值改為get),然後提交表單,會得到如下URL。
在這裡插入圖片描述

  • "?"後面的內容為引數資訊

  • 引數是由引數名和引數值組成的,中間使用等號“=”進行連線

  • 多個引數之間使用“&”分隔

  • username和password是引數名,對應表單中的name屬性

  • test和123456是引數值,對應使用者填寫的內容

    if (isset($_GET['username']) && isset($_GET['password'])) {
     echo $_GET['username']; // 輸出結果:	test
     echo $_GET['password']; // 輸出結果:123456
    }
    

3.陣列方式提交資料

  • 複選框是一種支援提交多個值的表單控制元件

  • 在編寫表單時應將其 name屬性設定為陣列

    <input type="checkbox" name="hobby[]" value="swimming"> 游泳
    <input type="checkbox" name="hobby[]" value="reading"> 讀書
    <input type="checkbox" name="hobby[]" value="running"> 跑步
    print_r($_POST['hobby']);
    
  • $_POST中的hobby元素是一個索引陣列,陣列中的元素是使用者所選複選框對應的value屬性值

  • 當用戶未選中任何複選框時,$_POST陣列中將不存在hobby元素

    <!-- 表單控制元件 -->									// 接收程式碼
    <input type="text" name="user[name]">				$_POST['user']['name'];
    <input type="text" name="user[a][1]">				$_POST['user']['a'][1];
    <input type="text" name="user[1][b]">				$_POST['user'][1]['b'];
    <input type="text" name="user[c][]">				$_POST['user']['c'][0];
    <input type="text" name="user[][d]">				$_POST['user'][2]['d'];
    <input type="text" name="user[][]">					$_POST['user'][3][0];
    <input type="text" name="user[3][][]">				$_POST['user'][3][1][0];
    <input type="text" name="user[3][][]">				$_POST['user'][3][2][0];
    <input type="text" name="user[][][2]">				$_POST['user'][4][0][2];
    <input type="text" name="user[4][0][]">				$_POST['user'][4][0][3];
    
  • 當需要處理的表單內容非常多的情況下,表單中name屬性的命名可以採用多維陣列的形式,便於開發,其使用方式與PHP中的陣列非常相似

  • 例如,開發線上考試系統時,表單中有填空題、單選題、多選題、判斷題等多種題型,這時可以將每種題型放到一個數組裡面進行提交,PHP收到後分別遍歷每種題型的陣列即可。

4.HTML特殊字元處理

在將使用者輸入的內容輸出到HTML中顯示時,會遇到特殊字元問題。
例如,使用者提交一段HTML程式碼時,為了將程式碼原樣顯示,需要將裡面的特殊字串轉換為實體字元,防止被瀏覽器解析
若沒有對這些特殊字元進行處理,會給網站的安全帶來風險。
為了解決這類問題,PHP提供了許多專門處理HTML特殊字元的函式
在這裡插入圖片描述

  • nl2br(),echo nl2br(“123\n456”,false);

  • strip_tags()可以去除字串中的標記部分,通常用於讀取一段HTML程式碼後,去除其中的HTML標記,只保留文字。

    	$html = <<<'EOD'
    	<ul><li>蘋果</li><li>香蕉</li></ul>
    	123<test>456</test><aaa>789
    	EOD;
    	echo strip_tags($html);
    	//輸出結果
    	蘋果香蕉
    	123456789
    
  • 轉換和還原字串中的HTML特殊字元,
    htmlspecialchars()和htmlspecialchars_decode()函式分別用於轉換和還原字串中的HTML特殊字元,具體包括“&”、單引號、雙引號、“<”、“>”,其中單引號需要將函式的第2個引數設定為ENT_QUOTES常量才會進行轉換。

    $html = "123<br>4'56";
    $html = htmlspecialchars($html,ENT_QUOTES | ENT_HTML5);
    echo $html,"\n";
    $str = htmlspecialchars_decode($html,ENT_QUOTES | ENT_HTML5);
    echo $html;
    //輸出結果
    123&lt;br&gt;4&apos;56
    123<br>4'56
    
  • urlencode()和urldecode()函式,urlencode()和urldecode()函式主要用於在HTML中輸出URL引數時進行編碼轉換,前者用於編碼,後者用於解碼。
    注意,當使用$_GET接收引數時,獲得的資料已經是URL解碼後的結果,無需手動進行處理。

    $name = 'A&B C';
    $name = urlencode($name);	// URL 編碼
    echo "http://localhost/test.php?name=$name","\n";
    echo urldecode($name);		// URL解碼
    //輸出結果
    http://localhost/test.php?name=A%26B+C
    A&B C
    
  • http_build_query(),利用http_build_query()函式可以將PHP關聯陣列轉換為URL引數字串。

    $params = [
    'name' => 'test','hobby' => ['reading','running']
    ];
    $query = http_build_query($params);
    echo "http://localhost/test.php?$query";
    //輸出結果
    http://localhost/test.php?name=test&hobby%5B0%5D=reading&hobby%5B1%5D=running
    

更多關於PHP相關內容感興趣的讀者可檢視本站專題:《php程式設計安全教程》、《php安全過濾技巧總結》、《PHP基本語法入門教程》、《php面向物件程式設計入門教程》、《php字串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》

希望本文所述對大家PHP程式設計有所幫助。