php实现添加
实现数据添加功能
在PHP中实现数据添加功能通常涉及表单提交和数据库操作。以下是实现步骤:
表单创建
创建HTML表单用于用户输入数据,表单的action属性指向处理添加操作的PHP文件,method设置为POST:
<form action="add.php" method="post">
<input type="text" name="username" placeholder="用户名">
<input type="email" name="email" placeholder="邮箱">
<input type="submit" value="添加">
</form>
数据库连接
在add.php中建立数据库连接,使用PDO或mysqli扩展:
$host = 'localhost';
$dbname = 'database_name';
$username = 'db_user';
$password = 'db_password';
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
die("连接失败: " . $e->getMessage());
}
接收并处理表单数据 获取表单提交的数据并进行验证:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = trim($_POST['username']);
$email = trim($_POST['email']);
if (empty($username) || empty($email)) {
die('用户名和邮箱不能为空');
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die('邮箱格式不正确');
}
}
执行插入操作 使用预处理语句防止SQL注入,将数据插入数据库:
$stmt = $conn->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);
if ($stmt->execute()) {
echo '数据添加成功';
} else {
echo '添加失败: ' . $stmt->errorInfo()[2];
}
安全注意事项
输入验证 对所有用户输入进行验证,确保符合预期的格式和类型:
$username = htmlspecialchars(strip_tags($username));
$email = htmlspecialchars(strip_tags($email));
错误处理 使用try-catch块捕获数据库操作中的异常:
try {
$stmt->execute();
} catch (PDOException $e) {
error_log($e->getMessage());
die('系统错误,请稍后再试');
}
CSRF防护 对于敏感操作,添加CSRF令牌保护:
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
完整示例代码
HTML表单 (index.html)
<!DOCTYPE html>
<html>
<head>
<title>添加用户</title>
</head>
<body>
<form action="add.php" method="post">
<input type="text" name="username" required placeholder="用户名">
<input type="email" name="email" required placeholder="邮箱">
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
<input type="submit" value="添加">
</form>
</body>
</html>
PHP处理脚本 (add.php)
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
die('CSRF验证失败');
}
require_once 'db_connect.php';
$username = htmlspecialchars(strip_tags(trim($_POST['username'])));
$email = htmlspecialchars(strip_tags(trim($_POST['email'])));
try {
$stmt = $conn->prepare("INSERT INTO users (username, email) VALUES (?, ?)");
$stmt->execute([$username, $email]);
header('Location: success.php');
exit;
} catch (PDOException $e) {
error_log($e->getMessage());
die('添加失败,请稍后再试');
}
}
?>
数据库连接文件 (db_connect.php)
<?php
$host = 'localhost';
$dbname = 'test_db';
$username = 'root';
$password = '';
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
die("连接失败: " . $e->getMessage());
}
?>






