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