Читать значение сеанса с помощью Javascript - PullRequest
14 голосов
/ 16 апреля 2009

Можно ли прочитать значение сеанса с помощью Javascript?

Например, если я назначил значение в сеансе в PHP:

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

Можно ли читать $_SESSION['msg'] с помощью Javascript?

Ответы [ 7 ]

39 голосов
/ 16 апреля 2009

Очень простой способ - сгенерировать JavaScript с помощью некоторого кода PHP:

<script type="text/javascript">
    <?php echo 'var msg = "'.json_encode($_SESSION['msg']).'";';
</script>
20 голосов
/ 16 апреля 2009

$ _ SESSION - это конструкция на стороне сервера. Вам нужно будет сохранить эту переменную в $ _COOKIE, чтобы иметь доступ к ней на стороне клиента.

5 голосов
/ 16 апреля 2009

.. Или вы можете использовать ajax для извлечения значения вашего сеанса на стороне сервера в ваш 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'].'"';
3 голосов
/ 17 декабря 2013

Если это кому-нибудь поможет, эти примеры вернули null, поэтому я просто использовал:

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

<script>
   <?php echo "var msg = '" .$msg . "'"; ?>
</script>
1 голос
/ 28 марта 2015

Может это работает:

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

getCookie('PHPSESSID');
1 голос
/ 08 сентября 2013

Чтобы сделать еще более простой пример ответа Луиса Мелгратти, вы можете просто вернуть закодированное в json значение из PHP и использовать 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);
?>

Я полагаю, что здесь есть еще больше ответов на аналогичный SO-поток: как получить доступ к php-сессии-переменных-из-jquery-функции-в-j-файле

1 голос
/ 13 марта 2012
<script type="text/javascript">
var foo="<?php echo $_SESSION['user_id']; ?>";
alert(foo);
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...