PHP中如何在if语句中正确使用isset?POST提交后变量不显示问题求解
问题排查与修复方案
- 变量名不一致
你开头定义的变量是$con_in_recepcion_es,但在elseif分支中调用的是$con_in_recepcion_esp,变量名多了末尾的p,属于拼写错误,自然读取不到对应值。
- 变量名不一致
- 未判断POST参数是否存在就直接赋值
首次进入页面没有POST请求时,直接给变量赋值$_POST里的参数会抛出PHP未定义索引的警告,也可能导致后续isset判断逻辑异常。另外你表单里提交的con_in_recepcion_esp参数没有在开头做接收处理,提交后第二个分支自然拿不到值。
- 未判断POST参数是否存在就直接赋值
- 表单提交逻辑错误
你给跳转按钮加了onclick="window.location='auditorio.php'",这是GET方式跳转页面,根本不会携带表单的POST参数,点击后相当于直接刷新页面,提交的参数全部丢失。
- 表单提交逻辑错误
- HTML标签嵌套错误
第一个container div关闭后,表单内多了一个冗余的</div>标签,标签不匹配可能导致页面渲染异常。
- HTML标签嵌套错误
第一步:修改变量接收逻辑
// 先判断参数存在再赋值,避免未定义警告,同时接收表单提交的con_in_recepcion_esp参数 $con_in_recepcion_es = isset($_POST['con_in_recepcion_es']) ? $_POST['con_in_recepcion_es'] : ''; $con_in_recepcion_eng = isset($_POST['con_in_recepcion_eng']) ? $_POST['con_in_recepcion_eng'] : ''; $con_in_recepcion_ori = isset($_POST['con_in_recepcion_ori']) ? $_POST['con_in_recepcion_ori'] : ''; $con_in_recepcion_esp = isset($_POST['con_in_recepcion_esp']) ? $_POST['con_in_recepcion_esp'] : '';
第二步:修改页面渲染与表单逻辑
<?php if(!empty($con_in_recepcion_es)){ ?> <div class="container contenerdor_dideo"> <iframe src="<?php echo $con_in_recepcion_es; ?>" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe> </div> <form method="POST" action="auditorio.php" name="formulario1"> <input type="text" name="con_in_recepcion_ori" value="<?php echo $con_in_recepcion_ori ?>"> <input type="text" name="con_in_recepcion_esp" value="<?php echo $con_in_recepcion_es ?>"> <!-- 移除onclick的GET跳转逻辑,靠js函数提交表单 --> <a href="javascript:enviar_formulario()"> <div id="button-forum-plenarios" > <i class="fas fa-globe iconForo"></i> <b>Audio Original</b> </div> </a> </form> <?php }elseif(!empty($con_in_recepcion_ori)){ ?> <input type="text" name="con_in_recepcion_ori" value="<?php echo $con_in_recepcion_esp ?>"> <?php }?>
第三步:补充表单提交的JS逻辑
确保页面存在对应的提交函数:
function enviar_formulario(){ document.formulario1.submit(); }
内容的提问来源于stack exchange,提问作者julio fernandez
相关产品推荐
相关产品推荐

