将php变量传递到html输入标签的值中是不好的做法吗?


Is it bad practice to pass php variables into values of html input tags?

让另一个get请求和另一个php文件的想法是烦人的我…所以我一直在使用这个方法:

<input class='hidden' id='dataIwant' value=' <?php echo $_SESSION["bigObjectArray"] ?>" />

这种做法不好吗?你觉得呢?

恕我直言,在客户端显示会话变量可能是危险的。只有一部分,如索引,字符串,用户已经知道应该显示给用户。如果会话变量包含用户密码、会话令牌等内容,则应该将其隐藏。

关于你的问题,当你想在哪里使用这些数据时,它会改变。如果它只是为了在表单内传递给另一个PHP页面,则不需要这样做,因为它仍然可以在表单处理页面中使用。

如果你想在客户端javascript代码中使用它,你可以json_encode它并将它赋值给一个javascript变量。

<script type="text/javascript">
   var myBigJSON = <?php echo json_encode($_SESSION["bigObjectArray"]);?>;
   var myBigArray = $.parseJSON(myBigJSON);
</script>

我认为这个例子说明了一切:

<?php
session_start();
$_SESSION['bigObjectArray'] = "'" /><script>alert('Hi!')</script><input type='"hidden";
?>
<input class="hidden" id="dataIwant" value="<?php echo $_SESSION["bigObjectArray"] ?>" />
输出:

<input class="hidden" id="dataIwant" value="" /><script>alert('Hi!')</script><input type="hidden" />

确保验证并过滤回显的数据。偏执,永远

如果您不转义它(htmlentitieshtmlspecialchars),这是一个不好的做法。

如果用户没有理由更改这个字段,这是一个不好的做法。

对于多选项卡浏览来说,这是一个不好的做法,因为它是SESSION存储的(并发页面写/读该值将失败)。

如果您html转义值,如果用户可以更改该字段(并且如果您在处理页面上检查它),并且如果它避免将该值存储在SESSION中,这是一个很好的实践。