2017-02-03 2 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(); 
    } 
    ?> 

私がログアウトするたびに、home.phpが更新され、セッションが終了します。Logout.phpが機能しない

+1

を破壊!= "") 'は真であるので、' home.php'をもう一度開き、セッションは終わっていません。 –

+0

はい、私はそれを考え出しました。 これは完全に正常に機能しました: <?php session_start(); unset($ _ SESSION ['korisnik']); session_destroy(); header( "Location:index.php"); exit(); ?> – RobiZzT

+0

['isset()'](http://php.net/manual/en/function.isset.php)は文字列ではなく真偽を返しますので、チェックする必要があります。 –

答えて

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"); 
} 
?> 

あなたがそれをチェックする必要があるとして、これを試してみてくださいが最初にそれ以外の場合は設定されている文は、セッションを超えている場合は、あなたのスクリプトは、あなたのようリダイレクトします `もしそうでない(ISSET($ _ SESSION [「korisnik」])ので

+0

'if(isset($ _ SESSION ['korisnik'])!=" ")'それでも "偽陽性"であり、失敗するでしょう。それは2つの別々の声明の中にある必要があります。 –

-1

最初のifブロックが最初に実行され、その時点でセッションが設定されています。 ifブロックの順序を逆にすると、より良い結果を得ることができます。

関連する問題