当前位置:首页 > 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
分享给朋友:

相关文章

php实现上传

php实现上传

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

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php 实现类

php 实现类

PHP 类的基本实现 在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法: class ClassName {…

php实现https

php实现https

PHP 实现 HTTPS 请求 在 PHP 中实现 HTTPS 请求,可以通过多种方式完成,包括使用内置函数、cURL 扩展或第三方库。以下是几种常见的方法: 使用 file_get_content…

react如何提交表单

react如何提交表单

表单提交的基本方法 在React中提交表单通常通过控制组件状态和事件处理实现。表单数据通过onSubmit事件捕获,并阻止默认提交行为以避免页面刷新。 import { useState } fro…

php数据库实现

php数据库实现

PHP 连接 MySQL 数据库 使用 mysqli 扩展连接 MySQL 数据库: <?php $servername = "localhost"; $username = "usernam…