2017-02-03 9 views
0
<?php 
    session_start(); 
    if (!isset($_SESSION['korisnik'])) { 
     header("Location: index.php"); 
    } else if(isset($_SESSION['korisnik'])!="") { 
     header("Location: home.php"); 
    } 

    if (isset($_GET['Odjava'])) { 
     unset($_SESSION['korisnik']); 
     session_unset(); 
     session_destroy(); 
     header("Location: index.php"); 
     exit(); 
    } 
    ?> 

Каждый раз, когда я нажимаю logout, home.php просто обновляется, а сеанс еще не закончен.Logout.php не работает

+1

Потому что 'еще если (Исеть ($ _ SESSION [«korisnik»]) ! = "") 'истинно, поэтому он снова открывает' home.php', а сеанс еще не закончен. –

+0

Да, я только что понял. Это сработало отлично: RobiZzT

+0

['isset()'] (http://php.net/manual/en/function.isset.php) возвращает логическое значение (true/false), а не строку, поэтому вам нужно проверить это. –

ответ

0
<?php 

if (isset($_GET['Odjava'])) { 
    unset($_SESSION['korisnik']); 
    session_unset(); 
    session_destroy(); 
    header("Location: index.php"); 
    exit(); 
} 

session_start(); 
if (!isset($_SESSION['korisnik'])) { 
    header("Location: index.php"); 
} else if(isset($_SESSION['korisnik'])!="") { 
    header("Location: home.php"); 
} 
?> 

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

+0

'if (isset ($ _ SESSION ['korisnik'])! =" ")' Это все еще «ложный положительный результат» и провалится. Он должен быть в двух отдельных заявлениях. –

-1

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

 Смежные вопросы

  • Нет связанных вопросов^_^