Использование сеансов
name|s:18:"Александр";age|i:25;
<?
session_start(); // создание сессии. я захожу в этот файл и в данный момент для меня открылась (создалась сессия)
// Файл сессии, если его не задать, по умолчанию пишется во временную директорию операционной системы, называется - sess_qdrblkllqfau7qs6k37drqhvjk5lgaf3
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = strip_tags($_POST["name"]);
$age = $_POST["age"] * 1; // лучше (int) чем "... * 1"
$_SESSION["name"] = $name; // принимаем данные и записываем в сессию
$_SESSION["age"] = $age;
}
else {
$name = $_SESSION["name"]; // надо понимать, если сессия открыта - вытаскиваем значение из сессионной переменной в нашу
$age = $_SESSION["age"];
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Демонстрация сессии</title>
</head>
<body>
<h1>Демонстрация сессии</h1>
<a href="session-2.php">Демо сессии</a><br>
<a href="session_destroy.php">Закрыть сессию</a><br><br>
<form action="<?=$_SERVER["PHP_SELF"]?>"
method="post">
Ваше имя:
<input type="text" name="name" value="<?=$name?>"><br>
Ваш возраст:
<input type="text" name="age" value="<?=$age?>"><br>
<input type="submit" value="Передать">
</form>
<?
if ($name and $age) {
if ($name and $age) {
echo "<h1>Привет, $name</h1>";
echo "<h3>Тебе $age лет</h3>";
}
else {
print "<h3>Заполните все поля!</h3>";
}
}
// двойной if - чтобы else не выполнялся. Но если удалите внешнее, то поведение поменяется, а если внутреннее, то не изменится.
?>
</body>
</html>
<?
// здеьсь мы по ссылке "Демо сессии" перешли к файлу session-2.php
session_start(); // здесь эта функция для ОБЕСПЕЧЕНИЯ ДОСТУПА К СЕССИИ (а не для создания сессии)
$name = $_SESSION["name"]; // вытащить данные из сессии в переменные
$age = $_SESSION["age"];
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Демо сессии</title>
</head>
<body>
<h1>Демо сессии</h1>
<a href="session-1.php">Демонстрация сессии</a><br>
<a href="session_destroy.php">Закрыть сессию</a><br><br>
<?
if ($name and $age) {
if ($name and $age) {
echo "<h1>Привет, $name</h1>";
echo "<h3>Тебе $age лет</h3>";
}
else {
print "<h3>Заполните все поля!</h3>";
}
}
?>
</body>
</html>
<? session_start() ?> <!--В данном контексте - это доступ к сессии-->
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Закрыть сессию</title>
</head>
<body>
<h1>Сессия закрыта</h1>
</body>
</html>
<? session_destroy() ?> <!--Очистка сессионных переменных-->
<!--И сессия теперь закрыта - если перейти в файл (на вкладку в браузере) "session-1.php" - не будут выводится данные, которые были введены ранее-->
<!--
И если посмотреть файл сессии "sess_qdrblkllqfau7qs6k37drqhvjk5lgaf3" - то он пустой (0 байт), его просто очистили.
Это говорит о том, что сессионная кука у меня (в браузере) есть, если не закрывать браузер. Т.е. если я сново зайду на "session-1.php" моя сессионная кука пошлется на сервер, и у меня будет использоваться тот же сессионный файл: "sess_qdrblkllqfau7qs6k37drqhvjk5lgaf3".
Если браузер закрыть, а потом сново зайти на "session-1.php" - создастся новый сессионный файл с новым идентификатором - (sess_новыйID).
Старые сессионные файлы не удаляются, они лежат пустие (0 байт).
-->