PHP实现点击提交后同页显示空邮箱错误提示求助
解决表单验证错误提示问题
问题分析
当前代码存在两个核心问题:
- 用户未输入邮箱提交时,
successForm.php直接输出错误信息,而非跳转回表单页面显示 registerForm.php仅处理成功状态的会话信息,未处理错误提示- 仅检查
$_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
相关产品推荐
相关产品推荐

