web-dev-qa-db-fra.com

Lire la valeur de la session avec Javascript

Est-il possible de lire une valeur de session avec Javascript?

Par exemple, si j'attribue une valeur à une session en PHP:

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

Est-il possible de lire $_SESSION['msg'] avec Javascript?

14
Jin Yong

$ _SESSION est une construction côté serveur. Vous devez stocker cette variable dans $ _COOKIE pour pouvoir y accéder côté client.

20
Will Green

Un moyen très simple consiste à générer le JavaScript avec du code PHP:

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

.. Ou vous pouvez utiliser ajax pour récupérer votre valeur de session côté serveur dans votre javascript côté client. "(Exemple rapide, sale et non testé, en utilisant jQuery )

Côté Javascript:

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

Côté PHP test.php:

echo 'var myData = "'. $_SESSION['msg'].'"';
6
Luis Melgratti

Si cela aide quelqu'un, ces exemples ont renvoyé null, donc je viens d'utiliser:

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

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

Pour rendre un exemple encore plus simple de la réponse de Luis Melgratti, vous pouvez simplement renvoyer une valeur codée json de PHP et utiliser jQuery pour l'analyser, comme ceci:

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

Je crois qu'il y a encore plus de réponses sur un thread SO similaire ici: comment-accéder-php-session-variables-from-jquery-function-in-a-js-file

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

Que ça marche:

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

getCookie('PHPSESSID');
1
MSS