2012-05-16 3 views
4

Я создал сессию в CakePHP, как это:Как сеанс доступа в JavaScript?

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

Теперь я хочу, чтобы проверить userid в сессии, используя JavaScript/JQuery

Есть ли метод прямого доступа к этой сессии в JavaScript ,

Благодаря

ответ

16

есть ли прямой метод доступа на этой сессии в JavaScript непосредственно.

No. Данные сеанса хранятся на сервере.

Чтобы получить к нему доступ, вам необходимо предоставить его на URI через PHP, а затем сделать HTTP-запрос к этому URI (возможно, используя Ajax).

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

Зачем вам проверять идентификатор пользователя на клиенте, где его можно подделать, обработать и т. Д.? Просто используйте идентификатор сеанса.

Помимо этого, есть два простых и дополнительных способа предоставить идентификатор пользователя JavaScript. Оба имеют то преимущество, что дополнительный вызов AJAX не требуется (что делает вашу страницу более отзывчивой):

  1. Храните идентификатор пользователя в файле cookie.
  2. Сформировать переменную 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-запрос.

Смежные вопросы