从JavaScript访问会话变量

时间:2011-11-15 20:09:14

标签: php javascript session variables

是否可以访问JavaScript中创建的会话变量,以及如何在JavaScript中复制此PHP代码?

if(empty($_SESSION['name'] {
   echo 'foo';
}

7 个答案:

答案 0 :(得分:4)

您可以通过Ajax访问页面,该页面将返回变量值:

使用jQuery:

$.get('myVariable.php', function ( data ) {
    alert(data)
});

PHP页面(myVariable.php):

<?php echo $_SESSION['user_id']; ?>

答案 1 :(得分:4)

如果您设置要通过php解析的javascript,您可以像在php中一样访问会话变量:

// Test.php
<?php session_start(); ?>

<?php $_SESSION['foo'] = 'bar' ?>

<script type="text/javascript">
    alert('<?php echo $_SESSION['foo'] ?>');
</scrip>

<?php var_dump($_SESSION['foo']) ?>

答案 2 :(得分:3)

抱歉,但你不能:(

首先是一点背景:

  

PHP中的会话支持包括一种在后续访问中保留某些数据的方法。这使您可以构建更多自定义应用程序并增加网站的吸引力。

     

访问您网站的访问者会被分配一个唯一ID,即所谓的会话ID。这可以存储在用户端的cookie中,也可以在URL中传播。

     

会话支持允许您注册要在请求之间保留的任意数量的变量。当访问者访问您的站点时,PHP将自动检查(如果session.auto_start设置为1)或您的请求(显式通过session_start()或通过session_register()隐式检查)是否已随请求发送特定会话ID。如果是这种情况,则重新创建先前保存的环境。   来自http://www.php.net/manual/en/intro.session.php

基本上,会话涉及存储数据服务器端并在cookie客户端存储ID。这意味着JS理论上可以访问cookie,但是你所拥有的只是访问PHPSESSID变量(会话ID)。

要实现您的目标,您可以使用ajax。 (与流行的误解相反)ajax请求仍然为服务器提供访问cookie和会话所需的所有信息。

所以只需创建一个像getName.php这样的服务器端脚本,其中包含:

if(!empty($_SESSION['name'])) {
    echo $_SESSION['name'];
}

使用ajax获取响应:)

答案 3 :(得分:1)

嗯... ajax很好,但是如果你真的想要,你可以将它们作为变量打印在头部的标签中,并通过js访问它们。我从来没有用会话变量做过,但是我一直以这种方式从php(mysql)中打印出来的值

答案 4 :(得分:0)

  

是否可以从javascript

访问php中创建的会话变量

没有。它们驻留在您的Web服务器的内存中,幸运的是,javascript无法访问它。

答案 5 :(得分:0)

会话变量存储在服务器上。使用javascript(客户端)访问它们的唯一方法是使用AJAX向后端发出请求到php页面,然后将该值返回给您。

答案 6 :(得分:0)

不,你不能。会话变量存储在服务器中,而不是存储在客户端中。您可以做的最接近的事情是在php脚本中验证会话变量,并使用ajax调用它。