Просмотр и изменение переменных сеанса в браузере - PullRequest
27 голосов
/ 12 марта 2010

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

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

Ответы [ 4 ]

53 голосов
/ 12 марта 2010

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

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

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

21 голосов
/ 12 марта 2010

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

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

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

<code>print_r($_SESSION); 
//if you echo "<pre>" before, and a closing "
"после, он печатает очень чисто.

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

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

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

2 голосов
/ 23 апреля 2014

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

<?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>
0 голосов
/ 20 марта 2014

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...