Storm-coder
7/8/2017 - 8:26 AM

Использование сеансов

Использование сеансов

<?
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 байт).
  -->