在 JavaScript 中如何访问 session?

Posted

技术标签:

【中文标题】在 JavaScript 中如何访问 session?【英文标题】:How access session in JavaScript? 【发布时间】:2012-05-24 00:13:11 【问题描述】:

我在 Cakephp 中这样创建会话:

$User = array('userid'=>232, 'access'=>1)
$this->Session->write('User',$User);

现在我想使用 JavaScript / jQuery

在会话中检查userid

JavaScript 中是否有任何直接访问此会话的方法。

谢谢

【问题讨论】:

【参考方案1】:

为什么要检查客户端上的用户 ID,它可以在哪里伪造、操纵等?只需使用会话 ID。

除此之外,还有两种简单且额外的方法可以将用户 ID 公开给 javascript。两者都具有不需要额外 AJAX 调用的优点(使您的页面更具响应性):

    将用户 ID 存储在 cookie 中。 生成存储用户 ID 的 JavaScript 变量:

在您的 php 文件中,执行以下操作:

<script>
var userId = <?php echo $User['userid']; ?>;
</script>

这只是一个值的示例。将 PHP 变量暴露给 JavaScript 的更好方法是单独的 PHP 文件/控制器操作,如下所示:

<?php
session_start();
$myValues = array();
$myValues['User'] = get_user_from_session(); // just an example
// Assemble all your values here
header('Content-type: application/json');
echo "var myValues = ".json_encode($myValues);
// or, if you go for a JSONP style init, use
// echo "initValues(".json_encode($myValues).")";

然后您可以将值包含在脚本的 src 属性中。然而,这将导致另一个 HTTP 请求。

【讨论】:

【参考方案2】:
// js function
var getUserId = function()  
 userId = null;
 $.ajax(
    type: "POST",
    url: "ajax.php", // @TODO set the right Path
    async : false,  
        success: function(msg)
    
        userId = msg;                   
    
   );
return userId;

/*PHP ajax.php*/
<?php
echo $this->Session->get('User'); or $_SESSION['User']
?>

--- CAll----------

var userId = getUserId();

【讨论】:

【参考方案3】:

有没有直接在JavaScript中直接访问这个会话的方法。

没有。会话数据存储在服务器上。

为了访问它,您需要通过 PHP 在 URI 上公开它,然后向该 URI 发出 HTTP 请求(可能使用 Ajax)。

【讨论】:

以上是关于在 JavaScript 中如何访问 session?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中访问 Chrome 拼写检查建议

如何在javascript中访问当前范围之外的变量?

在 JavaScript 中如何访问 session?

如何将 localstorage 数组存储到 MySQL 数据库中?

如何在 javascript 中访问 servlet 变量

如何在 JavaScript 中访问 Grails 变量?