当前位置:首页 > PHP

php实现表单

2026-01-13 12:58:44PHP

PHP 表单基础实现

创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例:

HTML 表单部分 (form.html)

<form action="process.php" method="post">
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name" required>

    <label for="email">邮箱:</label>
    <input type="email" id="email" name="email" required>

    <label for="message">留言:</label>
    <textarea id="message" name="message" required></textarea>

    <input type="submit" value="提交">
</form>

PHP 处理脚本 (process.php)

php实现表单

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = htmlspecialchars($_POST['name']);
    $email = htmlspecialchars($_POST['email']);
    $message = htmlspecialchars($_POST['message']);

    echo "姓名:$name<br>";
    echo "邮箱:$email<br>";
    echo "留言:$message";
}
?>

表单验证增强

为确保数据安全性和有效性,应添加服务器端验证:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $errors = [];

    $name = trim($_POST['name']);
    if (empty($name)) {
        $errors[] = "姓名不能为空";
    }

    $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
    if (!$email) {
        $errors[] = "邮箱格式无效";
    }

    $message = trim($_POST['message']);
    if (empty($message)) {
        $errors[] = "留言内容不能为空";
    }

    if (empty($errors)) {
        // 处理有效数据
        echo "表单提交成功";
    } else {
        foreach ($errors as $error) {
            echo "<p>$error</p>";
        }
    }
}
?>

文件上传处理

处理文件上传需要特别注意安全性:

php实现表单

<?php
if (isset($_FILES['file'])) {
    $allowed = ['jpg', 'jpeg', 'png', 'gif'];
    $file_name = $_FILES['file']['name'];
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

    if (in_array($file_ext, $allowed)) {
        $target_dir = "uploads/";
        $target_file = $target_dir . basename($file_name);

        if (move_uploaded_file($_FILES['file']['tmp_name'], $target_file)) {
            echo "文件上传成功";
        } else {
            echo "文件上传失败";
        }
    } else {
        echo "不允许的文件类型";
    }
}
?>

对应的 HTML 表单需要添加 enctype 属性:

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传">
</form>

防止 CSRF 攻击

为表单添加 CSRF 保护:

session_start();

// 生成令牌
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

// 表单中隐藏字段
echo '<input type="hidden" name="csrf_token" value="'.$_SESSION['csrf_token'].'">';

// 验证令牌
if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die("CSRF 验证失败");
}

使用 PDO 安全存储数据

将表单数据安全存储到 MySQL 数据库:

try {
    $pdo = new PDO("mysql:host=localhost;dbname=test", "username", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $pdo->prepare("INSERT INTO contacts (name, email, message) VALUES (:name, :email, :message)");
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':email', $email);
    $stmt->bindParam(':message', $message);

    $stmt->execute();
    echo "数据保存成功";
} catch(PDOException $e) {
    echo "错误: " . $e->getMessage();
}

标签: 表单php
分享给朋友:

相关文章

vue 实现表单

vue 实现表单

Vue 表单实现方法 Vue.js 提供了多种方式实现表单,包括双向数据绑定、表单验证和动态表单生成。以下是常见的实现方法: 基础表单绑定 使用 v-model 指令实现表单元素与数据的双向绑定:…

vue表单实现

vue表单实现

Vue 表单实现方法 双向数据绑定 使用 v-model 指令实现表单输入与应用状态的双向绑定,适用于各类表单控件。例如文本输入框: <input v-model="message" plac…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n!…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 &l…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searc…