Почему у меня не удаляется сессия?

259
20 января 2017, 10:05

Есть код

<? if ($_SESSION['steamid'] = "YES") {
             echo '<a href="logout.php"><input type="image" src="img/logout.png"></a>';
         }else { include ('steam_auth.php'); }?>

Оно всегда выдаёт картинку из img/logout.png а в logoutp.php написано:

  <?
session_start();
unset($_SESSION['steamid']);
session_destroy();
header ("Location: index.php");
exit;
?>

Почему у меня сессия не unset'ается?

Answer 1

Все верно ты присваиваешь YES потом чистишь сессию потом снова присваиваешь YES

Answer 2

У вас в первой строчке вместо оператора сравнения используется оператор присвоения:

<? if ($_SESSION['steamid'] = "YES") {

То есть вы каждый раз присваиваете переменной $_SESSION['steamid'] значение YES, которое проверяется на истинность и поскольку строка YES приводится к булеву типу и равно истине, то вы всегда ходите по кругу.

Нужно исправить проверку аутентификации путем добавления еще двух знаков равенства:

<? if ($_SESSION['steamid'] === "YES") {

Это частая ошибка, причем даже опытных разработчиков. Просто на внимательность проверка. В некоторых стандартах кодирования есть даже правило смены мест операндов. Вот если так написать ваше условие и допустить опечатку, то будет системная ошибка, которая сразу укажет место и сэкономит уйму времени:

<? if ("YES" === $_SESSION['steamid']) {
READ ALSO
Xampp и phpword на windows

Xampp и phpword на windows

Отказывается работать phpword при создании файла на основе шаблонаВыдаёт ошибки

401
PHP Array. Убрать дубли и перезаписать значение [option] из дублей

PHP Array. Убрать дубли и перезаписать значение [option] из дублей

Всем привет! Есть массив, который приходит на view:

329
Как извлечь счётчик массива из $smarty в php

Как извлечь счётчик массива из $smarty в php

Ковыряюсь со старым движком ShopScriptНа странице есть цикл

301