2009-04-16 65 views
12

使用Javascript讀取會話值有可能嗎?使用Javascript讀取會話值

例如,如果我分配一個值到PHP中的會話:

$_SESSION['msg'] = "ABC Message"; 

是否可以讀取$_SESSION['msg']使用Javascript?

回答

19

$ _SESSION是一個服務器端構造。您需要將該變量存儲在$ _COOKIE中以便能夠訪問它在客戶端。

+5

爲什麼這被投票了?哈託的解決方案證明它是不真實的。 – da5id 2009-04-16 22:46:34

+0

因爲答案的第一部分非常正確。 – Kalium 2009-04-16 22:47:44

+1

是同意的,但它沒有回答這個問題,而且實際上提供了誤導性的信息。 – da5id 2009-04-16 23:28:12

5

..或者你可以使用AJAX到你的服務器端的會話值retrive到您的客戶端javascript.` (快速,骯髒的和未經考驗的例子,使用jQuery

JavaScript端:

$.ajax({ 
     url: "test.php", 
     cache: false, 
     success: function(html){ 
     eval(html); /// UGLY NASTY YOU MUST VALIDATE YOUR INPUTS... JUST AN EXAMPLE 
     } 
    }); 

PHP側的test.php:

echo 'var myData = "'. $_SESSION['msg'].'"'; 
37

一個非常簡單的方法是用一些PHP代碼來生成JavaScript:

<script type="text/javascript"> 
    <?php echo 'var msg = "'.json_encode($_SESSION['msg']).'";'; 
</script> 
0
<script type="text/javascript"> 
var foo="<?php echo $_SESSION['user_id']; ?>"; 
alert(foo); 
</script> 
1

爲了讓路易斯Melgratti's的一種更簡單的例子回答你可以從PHP和使用返回JSON編碼值jQuery來分析它,就像這樣:

的Javascript:

$("#some_button") 
    .click(function() 
    { 
     $.ajax(
     { 
      url: "get_session.php", 
      cache: false 
     }) 
     .done(function(result) 
     { 
      var session_credentials = $.parseJSON(result); 
      console.log(session_credentials); 
     }); 
    }); 

PHP:

//get_session.php 
<?php 
    session_start(); 
    echo json_encode($_SESSION); 
?> 

我相信有一個相似的,所以線程這裏更答案:how-to-access-php-session-variables-from-jquery-function-in-a-js-file

3

如果這可以幫助任何人,那些例子返回null,所以我只是用:

<?php session_start(); 
    $msg = $_SESSION['msg']; 
?> 

<script> 
    <?php echo "var msg = '" .$msg . "'"; ?> 
</script> 
0

它可能工作:

function getCookie(name) { 
    var value = "; " + document.cookie; 
    var parts = value.split("; " + name + "="); 
    if (parts.length == 2) return parts.pop().split(";").shift(); 
} 

getCookie('PHPSESSID');