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引數中進行提交。
-
"?"後面的內容為引數資訊
-
引數是由引數名和引數值組成的,中間使用等號“=”進行連線
-
多個引數之間使用“&”分隔
-
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<br>4'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程式設計有所幫助。