2009-04-16 33 views
12

Có thể đọc giá trị phiên với Javascript không?Đọc giá trị phiên với Javascript

Ví dụ, nếu tôi chỉ định một giá trị vào một phiên trong PHP:

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

Có thể đọc $_SESSION['msg'] với Javascript?

Trả lời

19

$ _SESSION là cấu trúc phía máy chủ. Bạn sẽ cần phải lưu biến đó trong $ _COOKIE để có thể truy cập nó phía máy khách.

+5

Tại sao điều này lại được bình chọn? giải pháp của harto chứng minh nó không đúng sự thật. – da5id

+0

Bởi vì phần đầu tiên của câu trả lời là khá chính xác. – Kalium

+1

Có thỏa thuận, nhưng nó không trả lời câu hỏi và trên thực tế là trình bày thông tin gây hiểu nhầm. – da5id

5

.. Hoặc bạn có thể sử dụng ajax để truy xuất giá trị phiên phía máy chủ của bạn vào bạn client-side javascript.` (nhanh, bẩn và chưa được kiểm tra ví dụ, sử dụng jQuery)

Javascript Side:

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

PHP phía test.php:

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

Một cách rất đơn giản là để tạo ra JavaScript với một số mã PHP:

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

Nếu $ _SESSION ['msg'] lưu trữ thông tin nhạy cảm, xuất ra một trang không được mã hóa là một nguy cơ bảo mật và HTTPS nên được sử dụng. –

+1

bạn có thể sử dụng json_encode() để thoát đúng cách –

+0

@tomhaigh Cảm ơn, đã cập nhật cho phù hợp – harto

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

Tôi tin rằng ý tưởng này đã được giải thích bởi harto. –

1

Để làm một ví dụ dễ dàng hơn của Luis Melgratti's trả lời bạn chỉ có thể trả về một giá trị json mã hóa từ PHP và sử dụng jQuery để phân tích nó, như thế này:

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); 
?> 

tôi tin rằng có nhiều hơn câu trả lời về một tương tự SO-đề ở đây: how-to-access-php-session-variables-from-jquery-function-in-a-js-file

3

Nếu điều này giúp bất cứ ai, những ví dụ trở null, vì vậy tôi chỉ sử dụng:

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

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

Không thực sự trả lời câu hỏi – MaGnetas

+0

Tôi thấy bạn -1'd tôi. Câu hỏi đặt ra là "Có thể đọc $ _SESSION ['msg'] bằng Javascript không?" câu trả lời của tôi sử dụng javascript để truy cập một biến php, trong trường hợp đó đã giúp bất cứ ai. Nhận xét của bạn là câu trả lời của tôi không giải quyết được câu hỏi. Bạn sai rồi. – user2954658

+1

Đọc câu trả lời của bạn một lần nữa. Câu hỏi đặt ra là có thể đọc các biến phiên. Câu trả lời là "Không", nhưng có một giải pháp hữu ích trong một số trường hợp. Bạn đã không nói điều đó. Ngoài ra một số định dạng mã sẽ được tốt đẹp. var msg = ' '; trông tốt hơn nhiều so với tham gia toàn bộ dòng javascript trong php. Tôi xin lỗi, nhưng điều này không giống như câu trả lời cho câu hỏi được hỏi. Hãy thử cải thiện nó. – MaGnetas

0

Có thể hoạt động:

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

getCookie('PHPSESSID'); 
Các vấn đề liên quan