接收请求数据
在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_string
或 PDO::quote
对用户输入的特殊字符进行转义,可以有效地防止 SQL 注入攻击,并保护数据库免受恶意注入的影响。
防止跨站脚本(XSS)攻击
// HTML 转义内容
htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
// 设置 Cookie 的 Secure 和 HttpOnly 标记
setcookie("cookie_name", "cookie_value", time() + 3600, '/', '', true, true);