【问题标题】:Not able to Logout (Session is not getting destroyed) in PHP无法在 PHP 中注销(会话没有被破坏)
【发布时间】:2017-05-01 09:23:42
【问题描述】:

我无法在 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();

?>

请帮帮我!!提前致谢

【问题讨论】:

    标签: php session-state


    【解决方案1】:
    if(!isset($_SESSION['user_name']) && empty($_SESSION['user_name']))
    

    应该是

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

    empty 检查未定义(与 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;
    

    【讨论】:

      【解决方案2】:

      我认为您在注销代码中缺少session_start()

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-25
        • 2013-02-12
        • 1970-01-01
        • 1970-01-01
        • 2011-09-19
        • 1970-01-01
        • 2017-09-11
        相关资源
        最近更新 更多