【问题标题】:Is it possible to read a PHP session using Javascript?是否可以使用 Javascript 读取 PHP 会话?
【发布时间】:2013-03-05 17:53:39
【问题描述】:

我正在使用 cakePHP 1.26。
在控制器中,我得到了一个包含以下代码行的函数:

$this->Session->write('testing', $user);
$this->Session->read('testing');

现在系统编写了一个会话并存储在服务器上。 是否可以使用 Javascript 或 Jquery 来读取名为“testing”的会话?

【问题讨论】:

    标签: php jquery


    【解决方案1】:

    PHP 会话存储在网络服务器的内存中,而 JavaScript 在网络客户端(网络浏览器)中运行。这些在现实世界中是两台物理上独立且独立的机器。它们通常只能使用 HTTP 协议通过网络相互通信。

    你有两个选择:

    1. 让 PHP 像 JS 变量一样打印会话数据:

      <script>var data = '<?= $_SESSION['data'] ?>';</script>
      
    2. 让JS使用Ajax从服务器端请求它。这是一个基于jQuery 的示例:

      <script>$.get('script.php', function(data) { /* .. */ });</script>
      

      基本上这个在script.php:

      <?php echo $_SESSION['data']; ?>
      

    不用说选项 1 是最简单直接的。

    【讨论】:

      【解决方案2】:

      没有。一般情况下,你可以将testing的值写入到发送给客户端的文档中(head可能是一个小javascript?),然后客户端就可以使用了。

      【讨论】:

        【解决方案3】:

        正如其他人已经说过的,在客户端获取会话需要一些先见之明(在页面上模糊)或其他请求。

        另一种解决方案是不使用会话,而是使用 cookie 代替或作为补充。只是不要相信cookies。用户可以对其进行编辑,因此它们只能用于显示内容。

        【讨论】:

          【解决方案4】:

          是否可以使用 Javascript 或 Jquery 来读取名为 'testing' 的会话?

          不,但你可以使用 PHP 将值放入 javascript:

          <?php
          print "<script type=\"text/javascript\">\n";
          print " var testing=\"" . $_SESSION['testing'] / "\";\n";
          print "</script>\n";
          ?>
          

          (或进入 HTML 并使用 Javascript 从那里读回)

          【讨论】:

            【解决方案5】:

            没有。您可以使用 JavaScript 向 PHP 页面发出 AJAX 获取请求,该页面将读取会话数据并返回到 JavaScript。

            【讨论】:

              【解决方案6】:

              您可以使用 jQuery AJAX 轻松地将会话变量从 PHP 服务器传递到 JavaScript。您可以将其作为 Json 对象传递,然后将其分配给 JavaScript 变量。

              【讨论】:

                猜你喜欢
                • 2018-10-30
                • 2011-06-29
                • 1970-01-01
                • 2011-02-27
                • 2012-01-25
                • 1970-01-01
                • 2017-01-04
                • 1970-01-01
                • 2010-10-19
                相关资源
                最近更新 更多