在PHP中无法注销(会话未被破坏)

时间:2017-05-01 01:02:00

标签: php session-state

我无法在PHP中取消设置会话(当我点击退出时它应该是destroy_session()但是它不能正常工作我的代码

<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();

&GT;

请帮帮我!!提前致谢

2 个答案:

答案 0 :(得分:0)

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

应该是

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;

答案 1 :(得分:0)

我认为您在注销码中错过了session_start()

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