2017-05-01 108 views
0

我不能夠取消設置在PHP中的會話(當我點擊退出應該destroy_session(),但它不工作我的代碼無法註銷(會話沒有被破壞掉了)在PHP

<ul class="nav1"> 
       <?php 
       if(!isset($_SESSION['user_name']) && empty($_SESSION['user_name'])) 
        { 
         echo '<li><a href="#" data-toggle="modal" data-target="#myModal">Mobile</a></li>'; 
         echo '<li><a href="#" data-toggle="modal" data-target="#myModal2">datacard</a></li>'; 
         echo '<li><a href="#" data-toggle="modal" data-target="#myModal1">DTH</a></li> '; 
         echo '<li><a href="#" data-toggle="modal" data-target="#myModal4">login</a></li>'; 
         echo '<li><a href="#" data-toggle="modal" data-target="#myModal5">Signup</a></li>'; 
        } 
        else 
        { 
         echo "<li><a href='#'>Hello,".$_SESSION['user_name']."</a></li>"; 
         echo "<li><a href='orders.php'>Passbook</a></li>"; 
         echo "<li><a href='#'>Wallet</a></li>"; 
         echo "<li><a href='settings.php'>Settings</a></li>"; 
         echo "<li><a href='logout.php'><i class='fa fa-sign-out'></i> Logout</a></li>"; 
        } 
         ?> 

我的註銷代碼

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

?>

請幫我!臨屋提前

回答

0
if(!isset($_SESSION['user_name']) && empty($_SESSION['user_name'])) 

NKS應該

if(empty($_SESSION['user_name'])) 

檢查都未定義(同isset)和缺乏任何價值 - 如果你已經清除了值或認證失敗。

來源:http://php.net/manual/en/function.session-destroy.php

注意:您不必調用session_destroy()從通常的代碼。清理$ _SESSION數組而不是銷燬會話數據。

但是,你需要使用在session_start能夠取消設置$ _SESSION [ 'USER_NAME']

session_start(); 
unset($_SESSION['user_name']); 
header('Location: index.php'); 
exit; 
+0

是它的工作!謝謝 –

0

我認爲你缺少你註銷代碼session_start()

session_start(); 
unset($_SESSION['user_name']); 
session_destroy(); 
header("Location: index.php"); 
exit();