我在CakePHP中創建的會話是這樣的:如何在JavaScript中訪問會話?
$User = array('userid'=>232, 'access'=>1)
$this->Session->write('User',$User);
現在我想用檢查會話userid
的JavaScript/jQuery的
是否有訪問此會議的JavaScript任何直接的方法。
感謝
我在CakePHP中創建的會話是這樣的:如何在JavaScript中訪問會話?
$User = array('userid'=>232, 'access'=>1)
$this->Session->write('User',$User);
現在我想用檢查會話userid
的JavaScript/jQuery的
是否有訪問此會議的JavaScript任何直接的方法。
感謝
有直接本屆會議JavaScript的任何直接的方法訪問。
編號會話數據存儲在服務器上。
爲了訪問它,您需要通過PHP在URI上公開它,然後對該URI發出HTTP請求(可能使用Ajax)。
// 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();
爲什麼你會檢查客戶端,它可以僞造,manipulted等上的用戶標識?只需使用會話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請求。