使用Javascript读取会话值

Jin*_*ong 14 javascript php session

是否可以使用Javascript读取会话值?

例如,如果我在PHP中为会话分配了一个值:

$_SESSION['msg'] = "ABC Message";
Run Code Online (Sandbox Code Playgroud)

是否可以$_SESSION['msg']使用Javascript 阅读?

har*_*rto 39

一种非常简单的方法是使用一些PHP代码生成JavaScript:

<script type="text/javascript">
    <?php echo 'var msg = "'.json_encode($_SESSION['msg']).'";';
</script>
Run Code Online (Sandbox Code Playgroud)

  • 但通过这样做,您可以直接公开该值,并且可以从控制台访问它并进行修改.如果您需要获取诸如privilege_type id之类的合理信息并且您不希望您的用户能够更改它,那么该怎么办:您需要在运行时从私有方法访问此类值,并且永远不要存储它以便以后使用它. (2认同)
  • 如果这被缓存,那么你会看到你的世界燃烧.这就是为什么我更喜欢cookie方法,这是接受的答案. (2认同)

Wil*_*een 20

$ _SESSION是服务器端构造.您需要将该变量存储在$ _COOKIE中才能访问客户端.

  • 为什么要投票?哈托的解决方案证明它是不真实的. (7认同)
  • 这怎么会误导?您无法使用javascript读取会话变量.您要么必须将值填入cookie,javascript可以访问,要么将其呈现给页面本身.那不是很安全. (4认同)

Lui*_*tti 6

..或者您可以使用ajax将服务器端会话值重新转换为客户端javascript.(快速,脏和未经测试的示例,使用jQuery)

Javascript方面:

$.ajax({
      url: "test.php",
      cache: false,
      success: function(html){
        eval( html ); /// UGLY NASTY YOU MUST VALIDATE YOUR INPUTS... JUST AN EXAMPLE
      }
    });
Run Code Online (Sandbox Code Playgroud)

PHP端test.php:

echo 'var myData = "'. $_SESSION['msg'].'"';
Run Code Online (Sandbox Code Playgroud)