我在CakePHP中创建了这样的会话:
$User = array('userid'=>232, 'access'=>1)
$this->Session->write('User',$User);
现在我想使用 JavaScript / jQuery
检查会话中的userid
是否有任何直接方法可以在 JavaScript 中访问此会话。
由于
答案 0 :(得分:16)
是否有任何直接方法直接在JavaScript中访问此会话。
没有。会话数据存储在服务器上。
为了访问它,您需要通过PHP在URI上公开它,然后向该URI发出HTTP请求(可能使用Ajax)。
答案 1 :(得分: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();
答案 2 :(得分:2)
为什么要检查客户端上的用户ID,它可以伪造,操纵等等?只需使用会话ID。
除此之外,还有两种简单的方法可以将用户ID公开给JavaScript。两者都有一个优点,即不需要额外的AJAX调用(使您的页面响应更快):
在您的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请求。