2010-07-29 124 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變量。