使用PHP POST方法生成表格后如何保留输入框内的值
解决方案:PHP接收POST参数生成表格后保留输入框已填数值
要实现表单提交后留存用户之前输入的内容,核心逻辑是在渲染输入框时,把经过校验的POST参数值绑定到input标签的value属性上,同时对输出内容做HTML实体转义,避免特殊字符破坏页面结构、防范XSS风险。
具体修改要点
- 给两个数字输入框新增
value属性,输出对应经过校验的$nA、$nB变量值 - 输出变量到HTML属性时使用
htmlspecialchars()函数做转义处理 - 原逻辑用
-1作为无效值标记,如果业务允许用户输入-1,建议换用null作为初始无效标记,避免合法输入被误判
修改后完整代码
表单+输出部分
<form action="zadatak_12-4.php" method="post"> <label for="nA">Prvi broj: </label> <!-- 绑定已提交的nA值到value属性,无效值时留空 --> <input type="number" id="nA" name="nA" value="<?php echo htmlspecialchars($nA != -1 ? $nA : ''); ?>"> <label for="nB">Drugi broj: </label> <!-- 绑定已提交的nB值到value属性,无效值时留空 --> <input type="number" id="nB" name="nB" value="<?php echo htmlspecialchars($nB != -1 ? $nB : ''); ?>"> <button type="submit">Generiraj</button> </form><br> <!-- 输出生成的表格/错误提示 --> <?php echo $pom; ?>
PHP逻辑部分(优化了无效值标记逻辑,避免-1被误判)
<?php // 用null作为初始无效值标记,和用户合法输入做区分 $nA = null; $nB = null; if(isset($_POST['nA']) && is_numeric($_POST['nA'])) $nA = $_POST['nA']; if(isset($_POST['nB']) && is_numeric($_POST['nB'])) $nB = $_POST['nB']; if(!is_null($nA) && !is_null($nB)) { $odBroj = $nA; $doBroj = $nB; if($nB > $nA) { $odBroj = $nB; $doBroj = $nA; } $pom ="<table class='tablica'>"; $pom .="<tr><th>Broj</th><th>Kvadrat</th><th>Alert poruka</th></tr>"; for ($i = $odBroj; $i >= $doBroj; $i--) { $pom .= "<tr><td>".$i."</td><td>".($i*$i)."</td><td><span class='glumiLink'>Poruka</span></td></tr>"; } $pom .="</table>"; } else { $pom ="<p>Pogrešno uneseni ili nedefinirani parametri!</p>"; } ?>
效果说明
首次打开页面时输入框为空,用户提交表单后,PHP会把接收到的合法参数回填到输入框的value属性中,用户可以直接看到之前填写的数值,无需重复输入。
内容的提问来源于stack exchange,提问作者Dominik Antonio Sajko
相关产品推荐
相关产品推荐

