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