点击提交按钮后校验消息不显示,如何仅用PHP修改代码?
问题修正方案
你的代码存在几个关键问题导致校验消息无法显示,直接修改PHP和HTML结构即可解决:
问题分析
- 表单提交后跳转到
process.php,但校验逻辑写在当前页面,无法触发 - 表单标签位置错误,提交按钮不在表单范围内,无法触发POST请求
- 校验逻辑代码位置在HTML输出之后,导致输出
<span>时$sperson变量未定义 - 空值和非空值的提示内容重复,不符合需求
修正后的完整代码
<?php // 初始化提示变量 $sperson = ''; // 处理表单提交 if (isset($_POST['submit'])) { $vperson = $_POST['person']; if (empty(trim($vperson))) { $sperson = 'Please insert this'; } else { // 非空时清空提示,也可根据需求设置其他内容 $sperson = ''; } } ?> <html> <head> <h1>Members</h1> <style>.error {color: #FF0000;}</style> </head> <body> <!-- 表单action设为空,提交到当前页面 --> <form method="post" action=""> <table border="1"> <tr> <td>Number of Person</td> <td align="center"> <input type="text" name="person" size="18" maxlength="18" value="<?php echo isset($_POST['person']) ? htmlspecialchars($_POST['person']) : ''; ?>"> <span class="error"><?php echo $sperson; ?></span> </td> </tr> <tr> <th colspan="2" align="right"> <input type="submit" name="submit" value="submit"> </th> </tr> </table> </form> </body> </html>
关键修改说明
- 将PHP逻辑移到HTML之前,确保输出
<span>时变量已初始化 - 表单
action设为空,提交到当前页面触发校验逻辑 - 修正表单标签位置,将表格和提交按钮包裹在
<form>内部 - 初始化
$sperson为空,避免变量未定义的警告 - 增加
trim()判断空值,过滤空格输入 - 保留用户输入内容,提升体验(用
htmlspecialchars防止XSS)
内容的提问来源于stack exchange,提问作者DuDu
相关产品推荐
相关产品推荐

