Отладка программы PHP, есть ли какой-либо надстройщик / плагин для браузера, который я могу просматривать переменными сеансов (те PHP $ _SESSION ["foobar"])?
Лучше, если я могу изменить значение в переменных.
Это одна из основных причин, по которой вы используете сеанс над файлом cookie – вы контролируете данные. С помощью файлов cookie пользователь может манипулировать данными.
Единственный способ доступа / обработки данных сеанса с клиентской стороны – это вызов Ajax или другой механизм JavaScript для вызова другого скрипта php, который будет выполнять поиск / обработку данных сеанса через функции session_
.
$_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()
.
Вы можете использовать этот код ниже:
<?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>
Однако имейте в виду, что в то время как «переменные» сеанса хранятся на стороне сервера, идентификатор сеанса либо находится в URL-адресе GET / POST (идея ОЧЕНЬ ПЛОХО), либо сохраняется в cookie-браузере браузера (улучшенная безопасность), но все же подвержен манипуляциям / attack / etc, если вы не берете файлы cookie на основе идентификаторов сеансов.
http://en.wikipedia.org/wiki/Session_fixation
http://en.wikibooks.org/wiki/PHP_Programming/sessions#Avoiding_Session_Fixation