You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现点击提交后同页显示空邮箱错误提示求助

解决表单验证错误提示问题

问题分析

当前代码存在两个核心问题:

  1. 用户未输入邮箱提交时,successForm.php直接输出错误信息,而非跳转回表单页面显示
  2. registerForm.php仅处理成功状态的会话信息,未处理错误提示
  3. 仅检查$_POST['email']是否存在,未验证内容是否为空(空字符串会绕过当前检查)

解决方案

1. 修改successForm.php,将错误信息存入会话并跳转回表单页面

<?php
session_start();
// 引入样式和脚本
echo "<link rel='stylesheet' type='text/css' href='registerForm.css' />";
echo "<script type='text/javascript' src='rfffff.js'></script>";

// 验证邮箱是否为空
if (!isset($_POST['email']) || trim($_POST['email']) === '') {
    $_SESSION['error'] = '请输入您的邮箱地址';
    header('Location: registerForm.php');
    exit;
}

try {
    $db = new PDO('mysql:host=localhost;dbname=mariawebsite;charset=utf8', 'root', 'root');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $email = $_POST['email'];
    $insertEmail = $db->prepare("INSERT INTO users_addresses(email) VALUES (:email)");
    $insertEmail->execute(['email' => $email]);
    
    $_SESSION['statut'] = "$email 提交成功";
    header('Location: home.php');
} catch (Exception $e) {
    die('错误:' . $e->getMessage());
}
?>

2. 修改registerForm.php,添加错误信息显示逻辑

<?php
session_start();
echo "<script type='text/javascript' src='registerForm.js'></script>";
?>

<div class="divCenter">
<div class="registerform-container">
    <form action="successForm.php" class="registerform-form" method="POST">
        <div>
            <label id="emailInput" for="email" class="registerform-form-label">Email</label>
            <div>
            <input type="email" class="registerform-form-control" id="email" name="email" aria-describedby="email-subscribe" placeholder="you@exemple.com">
            <div id="email-help" class="registerform-form-text">L'email utilisé lors de la création de compte.</div>
            </div>
        </div>
        <button id="button" class="registerform-btn disabled" type="submit">Send</button>
    </form>

    <?php if(isset($_SESSION['statut'])): ?>
        <div class="success">
            <p><?php echo htmlspecialchars($_SESSION['statut']) ?></p>
        </div>
        <?php unset($_SESSION['statut']); ?>
    <?php endif; ?>

    <?php if(isset($_SESSION['error'])): ?>
        <div class="error">
            <p><?php echo htmlspecialchars($_SESSION['error']) ?></p>
        </div>
        <?php unset($_SESSION['error']); ?>
    <?php endif; ?>
</div>
</div>

3. 可选:添加错误提示样式(在registerForm.css中)

.error {
    color: #dc3545;
    margin-top: 10px;
    padding: 8px;
    background-color: #f8d7da;
    border-radius: 4px;
}

效果说明

  • 用户点击提交但未输入邮箱时,会跳转回registerForm.php并显示红色错误提示
  • 页面初始加载时不会显示任何错误信息
  • 提交成功后仍会跳转到home.php并在返回表单时显示成功提示

内容的提问来源于stack exchange,提问作者Léo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:55:30