让另一个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" />
确保验证并过滤回显的数据。偏执,永远。
如果您不转义它(htmlentities
或htmlspecialchars
),这是一个不好的做法。
如果用户没有理由更改这个字段,这是一个不好的做法。
对于多选项卡浏览来说,这是一个不好的做法,因为它是SESSION
存储的(并发页面写/读该值将失败)。
如果您html转义值,如果用户可以更改该字段(并且如果您在处理页面上检查它),并且如果它避免将该值存储在SESSION
中,这是一个很好的实践。