在PHP控制器动态HTML中插入PHP变量的实现问题
问题分析与解决方法
你的问题出在动态拼接HTML字符串时错误嵌套了PHP代码——当前你把<?php echo "$id"?>作为字符串内容直接输出到HTML里,而PHP不会再次解析这段嵌套的代码,导致浏览器拿到的就是这段文本,提交后自然无法正确传递ID值。
正确的实现方式
直接在PHP字符串中嵌入$id变量即可,不需要再写PHP标签:
$body .= ' <form method="get"> <input type="hidden" name="leave" value="' . $id . '"> <input type="submit" value="Leave"> </form>';
或者使用双引号字符串(注意调整属性的引号包裹方式,避免语法错误):
$body .= " <form method='get'> <input type='hidden' name='leave' value='$id'> <input type='submit' value='Leave'> </form>";
原代码无效的原因
你原代码里的<?php echo "$id"?>会被当作普通文本直接输出到HTML中,最终生成的HTML代码是:
<input type="hidden" name="leave" value="<?php echo "$id"?>">
浏览器解析时会把<?php作为value的起始内容,所以提交后$_GET['leave']拿到的就是<?php,这和你日志里的结果完全一致。
额外安全提示
如果$id是用户输入或不可信来源的数据,建议使用htmlspecialchars()转义,防止XSS攻击:
$body .= ' <form method="get"> <input type="hidden" name="leave" value="' . htmlspecialchars($id) . '"> <input type="submit" value="Leave"> </form>';
内容的提问来源于stack exchange,提问作者Newbie
相关产品推荐
相关产品推荐

