51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

PHP接收POST/GET请求数据并进行数据验证和清理

接收请求数据

在PHP中,可以使用 $_POST$_GET 超全局变量来接收 POST 和 GET 请求中的数据。

接收 POST 请求数据

// 接收单个 POST 变量
$variable = $_POST['variable_name'];

// 接收多个 POST 变量
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];

// 通过循环接收所有 POST 变量
foreach ($_POST as $key => $value) {
    // 处理每个键值对
}

接收 GET 请求数据

// 接收单个 GET 变量
$variable = $_GET['variable_name'];

// 接收多个 GET 变量
$var1 = $_GET['var1'];
$var2 = $_GET['var2'];

// 通过循环接收所有 GET 变量
foreach ($_GET as $key => $value) {
    // 处理每个键值对
}

接收 JSON 格式数据

// 获取 POST 请求的原始 JSON 数据
$json = file_get_contents('php://input');

// 解码 JSON 数据为 PHP 数组
$data = json_decode($json, true); // 第二个参数为 true 表示返回数组,否则返回对象

// 访问 JSON 数据中的字段
$variable1 = $data['key1'];
$variable2 = $data['key2'];

接收其他格式数据

接收 Form Data 数据

// 单个 Form Data 变量
$variable = $_POST['variable_name'];

// 多个 Form Data 变量
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];

// 循环接收所有 Form Data 变量
foreach ($_POST as $key => $value) {
    // 处理每个键值对
}

接收 XML 数据

// 获取 XML 数据
$xml = file_get_contents('php://input');

// 解析 XML 数据
$parsed_xml = simplexml_load_string($xml);

// 访问 XML 中的元素
$element1 = $parsed_xml->element1;
$element2 = $parsed_xml->element2;

接收文件上传数据

如果要接收通过表单上传的文件,可以使用 $_FILES 超全局变量。

// 单个文件上传
$uploaded_file = $_FILES['file_input_name'];

// 获取文件名
$file_name = $uploaded_file['name'];

// 获取临时文件路径
$tmp_file_path = $uploaded_file['tmp_name'];

// 获取文件大小
$file_size = $uploaded_file['size'];

// 获取文件类型
$file_type = $uploaded_file['type'];

// 处理上传文件
move_uploaded_file($tmp_file_path, 'upload_directory/' . $file_name);

注意:

  • <form> 标签中需添加 enctype="multipart/form-data" 属性。

数据验证和清理

过滤输入数据:使用 filter_var 函数

filter_var 函数用于过滤和验证数据,确保其符合预期的类型。

// 过滤和验证邮箱地址
$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // 邮箱地址有效
} else {
    // 邮箱地址无效
}

在上面的示例中,FILTER_VALIDATE_EMAIL 选项用于验证邮箱地址。filter_var 函数还可以用于验证 URL、整数值等不同类型的数据。

转义特殊字符:使用 mysqli_real_escape_string

mysqli_real_escape_string 函数用于对字符串中的特殊字符进行转义,以防止 SQL 注入攻击。

$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

// 使用转义后的数据执行 SQL 查询
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = $conn->query($query);

转义特殊字符:使用 PDO::quote

在 PDO 中,可以使用 quote 方法来对字符串进行转义。

$username = $pdo->quote($_POST['username']);
$password = $pdo->quote($_POST['password']);

// 使用转义后的数据执行 SQL 查询
$stmt = $pdo->query("SELECT * FROM users WHERE username=$username AND password=$password");

通过使用 mysqli_real_escape_stringPDO::quote 对用户输入的特殊字符进行转义,可以有效地防止 SQL 注入攻击,并保护数据库免受恶意注入的影响。

防止跨站脚本(XSS)攻击

// HTML 转义内容
htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

// 设置 Cookie 的 Secure 和 HttpOnly 标记
setcookie("cookie_name", "cookie_value", time() + 3600, '/', '', true, true);
赞(1)
未经允许不得转载:工具盒子 » PHP接收POST/GET请求数据并进行数据验证和清理