Visualizza e modifica le variables di session in un browser

Debug di un programma PHP, c'è qualche add-on / plug-in per browser che posso visualizzare le variables di session (quelle PHP $ _SESSION ["foobar"])?

Meglio se posso cambiare il valore nelle variables.

Non c'è modo di manipolare i valori memorizzati nelle sessioni dal lato client.

Questo è uno dei motivi principali per cui utilizzi una session su un cookie: TU controlli i dati. Con i cookie, l'utente può manipolare i dati.

L'unico modo per accedere / manipolare i dati di session dal lato client sarebbe con una chiamata Ajax o altro meccanismo JavaScript per call un altro script php, che farebbe il recupero / la manipolazione dei dati della session tramite le funzioni session_ .

$_SESSION è una matrix di variables lato server. Se potessimo leggere o modificare i valori, ci sono molte cose che potremmo fare per hackerare o causare altre cose brutte.

Tuttavia, usando phpinfo(); possiamo vedere le variables di session – ma non possiamo cambiare il valore.

Ancora meglio, possiamo eseguire il debug di tutte le variables di session con

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

alcuni altri comandi utili:

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

Session è un arrays quindi se imposti $_SESSION['key']='value'; è come $arrays['key']=value; – solo, ciò che è speciale su $ _SESSION – è che persiste fino a quando la window non viene chiusa, o session_destroy() viene chiamato.

Puoi usare questo codice qui sotto:

 <?php error_reporting(E_ALL); session_start(); if (isset($_POST['session'])) { $session = eval("return {$_POST['session']};"); if (is_arrays($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> 

Si noti tuttavia che mentre le "variables" di session sono archiviate lato server, l'ID session è nell'URL GET / POST (un'idea MOLTO BAD) o memorizzato in un cookie del browser (migliore sicurezza), ma comunque suscettibile di manipolazione / attack / etc se non si passano gli ID di session basati sui cookie con attenzione.

http://en.wikipedia.org/wiki/Session_fixation

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