2009-04-16 17 views
12

Czy można odczytać wartość sesji za pomocą JavaScript?Odczytaj wartość sesji z Javascriptem

Na przykład, jeśli przypisano wartość w sesji w PHP:

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

jest to możliwe do odczytania $_SESSION['msg'] z JavaScript?

Odpowiedz

19

$ _SESSION jest konstrukcją po stronie serwera. Będziesz musiał przechowywać tę zmienną w $ _COOKIE, aby móc uzyskać dostęp do strony klienta.

+5

Dlaczego to jest poddane pod głosowanie? Rozwiązanie firmy harto udowadnia, że ​​to nieprawda. – da5id

+0

Ponieważ pierwsza część odpowiedzi jest całkiem poprawna. – Kalium

+1

Zgadzam się, ale nie odpowiada na pytanie i w rzeczywistości przedstawia wprowadzające w błąd informacje. – da5id

5

.. Albo można użyć ajax na sprowadzaniu twojej stronie wartość sesji serwera na ciebie po stronie klienta javascript.` (szybki, brudne i niesprawdzone przykład za pomocą jQuery)

Javascript niepożądane:

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

strona PHP test.php:

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

Bardzo prostym sposobem jest generowanie kodu JavaScript z kodem PHP:

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

Jeśli $ _SESSION ['msg'] przechowuje poufne informacje, wyjście na niezaszyfrowaną stronę jest zagrożeniem bezpieczeństwa i należy użyć HTTPS. –

+1

można użyć json_encode(), aby poprawnie uciec przed nim –

+0

@tomhaigh Dzięki, zaktualizowany odpowiednio – harto

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

Wierzę, że ten pomysł został już wyjaśniony przez harto. –

1

złożyć jeszcze łatwiejsze przykładem Luis Melgratti's odpowiedzieć można tylko zwrócić json zakodowany wartość z PHP i użytkowania jQuery go analizować, tak:

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

Wierzę, że istnieją jeszcze więcej odpowiedzi na podobny SO-wątku tutaj: how-to-access-php-session-variables-from-jquery-function-in-a-js-file

3

Jeśli to pomoże ktoś te przykłady powrócił null, więc po prostu stosować:

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

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

Naprawdę nie odpowiadając na pytanie – MaGnetas

+0

Widzę, że mnie dałeś. Pytanie brzmi "Czy można przeczytać $ _SESSION ['msg'] przy pomocy Javascript?" Moja odpowiedź wykorzystuje javascript do uzyskiwania dostępu do zmiennej php, w przypadku, która pomogła każdemu. Twój komentarz jest taki, że moja odpowiedź nie rozwiązała problemu. Mylisz się. – user2954658

+1

Przeczytaj ponownie odpowiedź. Pytanie brzmiało, czy można odczytać zmienne sesji. Odpowiedź brzmi "Nie", ale w niektórych sytuacjach pomocne jest obejście tego problemu. Nie oświadczyłeś tego. Również formatowanie kodu byłoby miłe. var msg = ' "; wygląda o wiele lepiej niż dołączenie do całej linii javascript w php. Przykro mi, ale to nie wygląda na odpowiedź na zadane pytanie. Spróbuj ją poprawić. – MaGnetas

0

Może zadziałać:

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

getCookie('PHPSESSID');