4

次のようにCakePHPでセッションを作成しました:

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

JavaScript / jQueryuseridを使用してセッションにチェックインしたい

JavaScriptでこのセッションに直接アクセスする方法はありますか。

ありがとう

4

3 に答える 3

16

JavaScript でこのセッションに直接アクセスする直接的な方法はありますか。

いいえ。セッション データはサーバーに保存されます。

これにアクセスするには、PHP を介して URI で公開し、その URI に対して HTTP 要求を行う必要があります (おそらく Ajax を使用します)。

于 2012-05-16T12:24:41.703 に答える
2

偽造、操作などの可能性があるクライアントのユーザー ID を確認するのはなぜですか? セッション ID を使用するだけです。

それとは別に、ユーザー ID を JavaScript に公開する簡単な追加の方法が 2 つあります。どちらにも、追加の AJAX 呼び出しが必要ないという利点があります (ページの応答性が向上します)。

  1. ユーザー ID を Cookie に保存します。
  2. ユーザー ID を格納する JavaScript 変数を生成します。

php ファイルで、次の操作を行います。

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

これは、1 つの値の単なる例です。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 リクエストが発生します。

于 2012-05-16T14:26:52.000 に答える
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();
于 2012-05-16T12:47:09.543 に答える