当前位置:首页 > 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
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
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实现表单

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

相关文章

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

vue新增表单实现

vue新增表单实现

Vue 表单实现方法 使用 Vue 实现新增表单功能可以通过多种方式完成,以下是一些常见的方法和步骤: 使用 v-model 双向绑定 在 Vue 中,v-model 指令可以实现表单输入和应用状…

css 制作表单

css 制作表单

使用 CSS 制作表单 表单是网页交互的重要组成部分,通过 CSS 可以美化表单元素,提升用户体验。以下是常见的表单样式设计方法。 基础表单结构 HTML 表单通常包含输入框、标签、按钮等元素。以…

vue表单实现搜索

vue表单实现搜索

实现 Vue 表单搜索功能 基础表单绑定 在 Vue 中通过 v-model 实现表单输入与数据的双向绑定,搜索框通常绑定一个字符串类型的数据。 <template> <in…

vue实现多行多个表单

vue实现多行多个表单

Vue 实现多行多个表单 在 Vue 中实现多行多个表单,通常需要动态生成表单字段,并确保数据绑定和提交逻辑正确。以下是实现方法: 动态表单数据绑定 使用 v-for 动态渲染多行表单,并通过 v…

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaS…