php 內(nèi)置函數(shù)處理表單數(shù)據(jù)包括驗(yàn)證、清理和安全處理,具體步驟如下:驗(yàn)證數(shù)據(jù)是否為空或已設(shè)置(empty()、isset())去除字符串空格和過濾輸入類型(trim()、filter_input())防范安全攻擊,如 xss、sql 注入(htmlspecialchars()、strip_tags()、mysqli_real_escape_string())
如何使用 PHP 內(nèi)置函數(shù)處理表單數(shù)據(jù)?
簡介
PHP 提供了幾種內(nèi)置函數(shù),可幫助處理通過表單接收的用戶輸入。這些函數(shù)可用于驗(yàn)證、清理和安全處理表單數(shù)據(jù)。
驗(yàn)證和清理表單數(shù)據(jù)
1. empty()
函數(shù)**: 檢查變量是否為空(沒有任何值)。
if (!empty($_POST['name'])) { // 用戶已提交數(shù)據(jù) }
登錄后復(fù)制
2. isset()
函數(shù)**: 檢查變量是否已設(shè)置。
if (isset($_POST['gender'])) { // 用戶已選擇性別 }
登錄后復(fù)制
3. trim()
函數(shù)**: 從字符串兩端移除空格。
$name = trim($_POST['name']);
登錄后復(fù)制
4. filter_input()
函數(shù)**: 根據(jù)指定類型過濾輸入。
$age = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT);
登錄后復(fù)制
安全處理表單數(shù)據(jù)
1. htmlspecialchars()
函數(shù)**: 將 HTML 字符轉(zhuǎn)換為實(shí)體,防止 XSS 攻擊。
$comment = htmlspecialchars($_POST['comment']);
登錄后復(fù)制
2. strip_tags()
函數(shù)**: 從字符串中刪除所有 HTML 和 PHP 標(biāo)記。
$description = strip_tags($_POST['description']);
登錄后復(fù)制
3. mysqli_real_escape_string()
函數(shù)**: 轉(zhuǎn)義特殊字符,防止 SQL 注入攻擊(僅用于 MySQL 數(shù)據(jù)庫)。
$name = mysqli_real_escape_string($conn, $_POST['name']);
登錄后復(fù)制
實(shí)戰(zhàn)案例
考慮一個(gè)簡單的 PHP 表單,用于收集用戶姓名和年齡:
<form action="process_form.php" method="post"> <label for="name">姓名:</label> <input type="text" name="name" id="name"> <br> <label for="age">年齡:</label> <input type="number" name="age" id="age"> <br> <input type="submit" value="提交"> </form>
登錄后復(fù)制
我們在 process_form.php
中處理表單數(shù)據(jù):
<?php // 驗(yàn)證姓名不為空 if (empty($_POST['name'])) { echo "請輸入您的姓名"; exit; } // 驗(yàn)證年齡已設(shè)置 if (!isset($_POST['age'])) { echo "請輸入您的年齡"; exit; } // 驗(yàn)證年齡為整數(shù) if (!filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT)) { echo "年齡必須為整數(shù)"; exit; } // 安全處理姓名和年齡 $name = htmlspecialchars(trim($_POST['name'])); $age = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT); // 將數(shù)據(jù)插入數(shù)據(jù)庫(省略,僅用于示例) $sql = "INSERT INTO users (name, age) VALUES ('$name', $age)";
登錄后復(fù)制