将参数从服务器端 PHP 传递到客户端 JavaScript 的最安全方法是什么

2022-08-30 16:08:11

在我的应用程序中,我严重依赖JavaScript来增强用户界面,但所有数据都来自数据库并由PHP处理。默认情况下,我使用'echo'语句来替换所需的值“及时”,如下所示:

var myVariable = <?php echo $myVariableInPHP ?>

但是,这对我来说并不是非常优雅,我担心这种代码的稳定性和可维护性。

我在这里有其他选择吗?

对于服务器端,我使用的是Symfony 1.4 PHP框架。

谢谢


答案 1

我最喜欢的方式是:

<?php

$var = array(
  'prop1' => 'value1',
  'prop2' => 'value2',
  // ...
);

?>
<script type="text/javascript">
   var varNameSpace = <?php echo json_encode($var); ?>;

   alert( varNameSpace.prop1 ); // -> 'value1'
</script>

使用可确保传递给 Javascript 的值经过转义且格式正确。使用公共变量容器还可以防止过度使用全局空间(窗口)。json_encode()


答案 2

你可能想使用JSON,在PHP(检查json_encode())和JavaScript中使用都非常简单。

在理解JavaScript的标签和浏览器中使用是安全的。请注意,PHP 函数不对 和 进行编码。<script><>

一些示例 PHP:

$user = (object) array("name"=>"Joseph", "age"=>29, "email"=>"asdf@example.net");
echo '<script type="text/javascript"> var user = '.json_encode($user).'; </script>';