2010-07-29 123 views
2

我正在使用cakePHP 1.26。
在控制器,我得到了它包含以下几行代码的函数:
是否可以使用Javascript读取PHP会话?

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

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

回答

9

PHP会话存储在web服务器的内存中,而JavaScript运行在webclient(webbrowser)中。那些在现实世界中是两个物理上分离和独立的机器。他们通常只能通过使用HTTP协议的网络进行通信。

你有2种选择:

  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是最容易和简单。

1

不,通常情况下,您可以将testing的值写入发送给客户端的文档中(可能是?head中的一个小javascript),然后它可用于客户端。

0

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

1

正如其他人已经说过的,在客户端获得会话需要一些预先考虑(在页面上脱口而出)或另一个请求。

另一种解决方案是不使用会话,而是使用cookie代替或作为恭维。只是不相信cookie。用户可以编辑它们,以便它们只能用于显示内容。

1

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

没有,但你可以用PHP把值转换为JavaScript:

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

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

0

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