Подтвердить что ты не робот

Просмотр и изменение переменных сеанса в браузере

Отладка программы PHP, есть ли какой-либо надстройщик/плагин для браузера, который я могу просматривать переменные сеанса (те PHP $_SESSION [ "foobar" ])?

Лучше, если я могу изменить значение в переменных.

4b9b3361

Ответ 1

Невозможно манипулировать значениями, хранящимися в сеансах, с клиентской стороны.

Это одна из основных причин, по которой вы используете сеанс над файлом cookie - вы контролируете данные. С помощью файлов cookie пользователь может управлять данными.

Единственный способ доступа/обработки данных сеанса с клиентской стороны - это вызов Ajax или другой механизм JavaScript для вызова другого php script, который будет выполнять поиск/обработку данных сеанса с помощью session_.

Ответ 2

$_SESSION - это серверный массив переменных. Если бы мы могли читать или изменять ценности, есть много вещей, которые мы могли бы сделать, чтобы взломать или вызвать другие плохие вещи.

Однако, используя phpinfo();, мы можем просмотреть переменные сеанса, но мы не можем изменить значение.

Еще лучше, мы можем отлаживать все переменные сеанса с помощью

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

некоторые другие полезные команды:

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

Сессия - это массив, поэтому, если вы устанавливаете $_SESSION['key']='value';, это то же самое, что и $array['key']=value; - только то, что особенное в $_SESSION, заключается в том, что оно сохраняется до закрытия окна или вызывает session_destroy().

Ответ 3

Вы можете использовать этот код ниже:

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

Ответ 4

Помните, однако, что, хотя переменные сеанса хранятся на стороне сервера, идентификатор сеанса находится либо в URL-адресе GET/POST (идея ОЧЕНЬ ПЛОХОЙ), либо сохраняется в cookie-браузере браузера (лучше безопасность), но все же восприимчивы к манипуляциям/атаке/etc, если вы не используете файлы cookie, основанные на файлах cookie, тщательно.

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

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