php实现表单提交
表单HTML创建
创建一个HTML表单,设置method为POST或GET,action指向处理表单的PHP文件。例如:
<form method="POST" action="process_form.php">
<label for="name">姓名:</label>
<input type="text" id="name" name="name" required>
<label for="email">邮箱:</label>
<input type="email" id="email" name="email" required>
<input type="submit" value="提交">
</form>
表单数据处理(PHP)
在process_form.php中,通过$_POST或$_GET超全局数组获取表单数据,并进行处理:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
// 验证数据
if (empty($name) || empty($email)) {
echo "姓名和邮箱不能为空";
} else {
echo "提交成功:姓名 - $name, 邮箱 - $email";
}
}
?>
数据验证与过滤
使用PHP内置函数对输入数据进行验证和过滤:
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
if ($email === false) {
echo "邮箱格式无效";
}
防止SQL注入
如果表单数据需存入数据库,使用预处理语句防止SQL注入:
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute([$name, $email]);
文件上传处理
若表单包含文件上传,需使用$_FILES处理:
if (isset($_FILES['file'])) {
$file = $_FILES['file'];
$uploadDir = 'uploads/';
$targetPath = $uploadDir . basename($file['name']);
if (move_uploaded_file($file['tmp_name'], $targetPath)) {
echo "文件上传成功";
}
}
安全增强措施
启用CSRF保护,生成并验证令牌:
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
die("CSRF验证失败");
}
}
响应与重定向
处理完成后重定向用户,避免重复提交:
header("Location: thank_you.php");
exit();






