Unset () и session_destroy (); - PullRequest
       2

Unset () и session_destroy ();

0 голосов
/ 20 апреля 2019
<?php session_start();
if(isset($_SESSION["user_name"]))
if($_GET["destroy"]=="yes")
{
unset($_SESSION["user_name"]);
session_destroy();
}

if(!isset($_SESSION["user_name"]) &&
$_GET["user"]!="")
$_SESSION["user_name"] = $_GET["user"];

?>
<html>
<head>
<title>Session Example</title>
</head>
<body>
Welcome <?php echo $_SESSION["user_name"]; ?>
<form action="#">
Input your name here: <input type=text name=user>
<input type=submit value=Submit>
</form>

<form action="#">
<input type=hidden value=yes name=destroy>
<input type=submit value="Destroy Previous Session">
</form>
</body>

</html>

выше, есть две строки "unset ($ SESSION [" username "]); session_destroy ();"когда я удалил "session_destroy ();"Дисплей такой же, как и у него.Это не нужно? Кто может объяснить это, любые советы будут оценены.

Ответы [ 3 ]

1 голос
/ 20 апреля 2019

session_destroy () уничтожает все данные, связанные с текущим сеансом

unset уничтожает определенный сеанс cookie

но php.net сообщает о session_destroy ():

Примечание: вам не нужно вызывать session_destroy () из обычного кода. Очистите массив $ _SESSION, а не уничтожайте данные сеанса.

Чтобы полностью завершить сеанс, идентификатор сеанса также должен быть не установлен. Если файл cookie используется для распространения идентификатора сеанса (поведение по умолчанию), файл cookie сеанса должен быть удален. Для этого можно использовать setcookie ().

1 голос
/ 20 апреля 2019

unset() уничтожает указанные переменные.

session_destroy() уничтожает все данные, связанные с текущим сеансом

Для более подробной информации Unset и session_destroy ()

0 голосов
/ 20 апреля 2019

Насколько я понимаю, если вы используете session_destroy (), вам не нужно сбрасывать файл сессии выше.Session_destroy () удаляет все данные из сеанса, включая $ _SESSION ['username'].

https://www.php.net/manual/en/function.session-destroy.php

Мне кажется, что если значение сеанса все еще отображается, то условие:

если (! Isset ($ _ SESSION ["user_name"]) && $ _GET ["user"]! = "")

не было выполнено.Трудно оценить это на основе приведенного выше кода.

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