【发布时间】:2013-03-05 17:53:39
【问题描述】:
我正在使用 cakePHP 1.26。
在控制器中,我得到了一个包含以下代码行的函数:
$this->Session->write('testing', $user);
$this->Session->read('testing');
现在系统编写了一个会话并存储在服务器上。 是否可以使用 Javascript 或 Jquery 来读取名为“testing”的会话?
【问题讨论】:
我正在使用 cakePHP 1.26。
在控制器中,我得到了一个包含以下代码行的函数:
$this->Session->write('testing', $user);
$this->Session->read('testing');
现在系统编写了一个会话并存储在服务器上。 是否可以使用 Javascript 或 Jquery 来读取名为“testing”的会话?
【问题讨论】:
PHP 会话存储在网络服务器的内存中,而 JavaScript 在网络客户端(网络浏览器)中运行。这些在现实世界中是两台物理上独立且独立的机器。它们通常只能使用 HTTP 协议通过网络相互通信。
你有两个选择:
让 PHP 像 JS 变量一样打印会话数据:
<script>var data = '<?= $_SESSION['data'] ?>';</script>
让JS使用Ajax从服务器端请求它。这是一个基于jQuery 的示例:
<script>$.get('script.php', function(data) { /* .. */ });</script>
基本上这个在script.php:
<?php echo $_SESSION['data']; ?>
不用说选项 1 是最简单直接的。
【讨论】:
没有。一般情况下,你可以将testing的值写入到发送给客户端的文档中(head可能是一个小javascript?),然后客户端就可以使用了。
【讨论】:
正如其他人已经说过的,在客户端获取会话需要一些先见之明(在页面上模糊)或其他请求。
另一种解决方案是不使用会话,而是使用 cookie 代替或作为补充。只是不要相信cookies。用户可以对其进行编辑,因此它们只能用于显示内容。
【讨论】:
是否可以使用 Javascript 或 Jquery 来读取名为 'testing' 的会话?
不,但你可以使用 PHP 将值放入 javascript:
<?php
print "<script type=\"text/javascript\">\n";
print " var testing=\"" . $_SESSION['testing'] / "\";\n";
print "</script>\n";
?>
(或进入 HTML 并使用 Javascript 从那里读回)
【讨论】:
没有。您可以使用 JavaScript 向 PHP 页面发出 AJAX 获取请求,该页面将读取会话数据并返回到 JavaScript。
【讨论】:
您可以使用 jQuery AJAX 轻松地将会话变量从 PHP 服务器传递到 JavaScript。您可以将其作为 Json 对象传递,然后将其分配给 JavaScript 变量。
【讨论】: