web-dev-qa-db-fra.com

Afficher et modifier les variables de session dans un navigateur

Déboguer un programme PHP, existe-t-il un module complémentaire/plug-in pour navigateur permettant d'afficher les variables de session (ces PHP $ _SESSION ["foobar"])?

Meilleur si je peux changer la valeur dans les variables.

25
ohho

Il n'y a aucun moyen de manipuler les valeurs stockées dans les sessions du côté client.

C'est l'une des principales raisons pour lesquelles vous souhaitez utiliser une session sur un cookie: VOUS contrôlez les données . Avec les cookies, l'utilisateur peut manipuler les données.

Le seul moyen d'accéder/de manipuler les données de session du côté client serait d'utiliser un appel Ajax ou un autre mécanisme JavaScript pour appeler un autre script php, qui effectuerait l'extraction/la manipulation des données de session via les fonctions session_ .

49
Jacob Relkin

$_SESSION est un tableau de variables côté serveur. Si nous pouvions lire ou modifier les valeurs, nous pourrions faire beaucoup de choses pour pirater ou causer d’autres mauvaises choses. 

Cependant, en utilisant phpinfo();, nous pouvons afficher les variables de session - mais nous ne pouvons pas modifier la valeur.

Mieux encore, nous pouvons déboguer toutes les variables de session avec

print_r($_SESSION); 
//if you echo "<pre>" before, and a closing "</pre>" after, it prints very cleanly.

quelques autres commandes utiles:

session_start(); // start session  -- returns Session ID
session_destroy(); // unset all session variable

Session est un tableau. Par conséquent, si vous définissez $_SESSION['key']='value';, il est identique à $array['key']=value;. Seulement, la particularité de $ _SESSION est qu'il persiste jusqu'à ce que la fenêtre soit fermée ou que session_destroy() soit appelé. 

21
apis17

Vous pouvez utiliser ce code ci-dessous:

<?php
error_reporting(E_ALL);
session_start();
if (isset($_POST['session'])) {
    $session = eval("return {$_POST['session']};");
    if (is_array($session)) {
        $_SESSION = $session;
        header("Location: {$_SERVER['PHP_SELF']}?saved");
    }
    else {
        header("Location: {$_SERVER['PHP_SELF']}?error");
    }
}

$session = htmlentities(var_export($_SESSION, true));
?>
<!DOCTYPE html>
<html lang="en-US">
    <head>
        <meta charset="UTF-8">
        <title>Session Variable Management</title>
        <style>
            textarea { font: 12px Consolas, Monaco, monospace; padding: 2px; border: 1px solid #444444; width: 99%; }
            .saved, .error { border: 1px solid #509151; background: #DDF0DD; padding: 2px; }
            .error { border-color: #915050; background: #F0DDDD; }
        </style>
    </head>
    <body>
        <h1>Session Variable Management</h1>
<?php if (isset($_GET['saved'])) { ?>
        <p class="saved">The session was saved successfully.</p>
<?php } else if (isset($_GET['error'])) { ?>
        <p class="error">The session variable did not parse correctly.</p>
<?php } ?>
        <form method="post">
            <textarea name="session" rows="<?php echo count(preg_split("/\n|\r/", $session)); ?>"><?php echo $session; ?></textarea>
            <input type="submit" value="Update Session">
        </form>
    </body>
</html>
2
CoderX

Sachez cependant que, si les «variables» de la session sont stockées sur le serveur, l’ID de session se trouve soit dans l’URL GET/POST (une idée TRÈS BAD), soit dans un cookie de navigateur (meilleure sécurité), mais reste sujet à manipulation./attack/etc si vous ne remettez pas soigneusement les identifiants de session basés sur les cookies.

http://fr.wikipedia.org/wiki/fixation_session

http://en.wikibooks.org/wiki/PHP_Programming/sessions#Avoiding_Session_Fixation

0
pjm