session_destroy()在服务器上不能与PHP> 7.0一起使用

时间:2018-01-13 15:06:59

标签: php session destroy

我是stackoverflow的新手,但我并不擅长PHP。 现在我有一个有趣的问题:

我在本地使用XAMPP 7.1.11和PHP 7.1.11进行开发,使用

进行会话注销
$_SESSION = array();
session_destroy();  

在logout.php文件中。在页面顶部有

session_start();

过去一切都没有任何问题。 现在我在提供程序中从PHP 7.0到7.1进行了php版本更改,并且无法再注销,会话信息似乎不会被删除。 我搜索了互联网,但我没有找到有用的提示,提供商告诉我要问一些PHP论坛。

我尝试了主题中的所有提示

why session_destroy() not working

The session_destroy(); doesn't work correctly on server with php 5.3.21

还有更多,但没有任何工作。在提供商处从PHP 7.0到PHP 7.2的变化也没有帮助。

我做错了什么?正如我所说:本地一切正常。

感谢您的帮助!

这是完整的logout.php文件:

<?php
session_start();
?>
<!-- Import Wordpress -->
<?php 
define('WP_USE_THEMES', false);
require('../wp-load.php'); ?>
<?php get_header(); ?>
<link href="cpplattform.css" type="text/css" rel="stylesheet">
<div class="spacer"></div>
<div class="container">
    <div class="row">
        <div class="<?php if ( is_active_sidebar( 'rightbar' ) ) : ?>col-md-8<?php else : ?>col-md-12<?php endif; ?>">
            <div class="content">                   
                <h2 class="entry-title">Logout</h2>
                <!----------------------------------------------------->                
                <section class = "conf">    
                    <i class='fa fa-power-off fa-5x' style ='color:#00ADED'></i>
                    <br>
                    <br>
                    Your logout was successful! Good Bye!
                    <br>
                    <br>
                    <a class="btn btn-md btn-inverse" href="cplogin.php">Login again</a></p>
                    <?php

                        $_SESSION = array();
                        $_SESSION['username'] = "";                     
                        session_destroy();                      
                    ?>                  
                </section>              
                <!----------------------------------------------------->
            </div><!--content-->
        </div>
    </div>
</div>

<!-- Change all links from Wordpress -->
<script src="cplinkmodify.js"></script>
<?php get_footer(); ?>

我添加了一些静态页面并导入了Wordpress主题。

1 个答案:

答案 0 :(得分:0)

  

注意:您不必从通常的代码调用session_destroy()。清理$ _SESSION数组而不是销毁会话数据。

向我们展示您设置$_SESSION = array();的代码页。这应该是您需要做的全部内容。检查您是否在页面上设置了session_start();

session_start();
$_SESSION = []; //empty the array. 

--End of file.

如果你想完全确定它可以正常工作,你可以尝试使用这样的东西:

session_start();
$_SESSION = []; //empty array. 
session_write_close(); 

但请注意,在脚本完成后,对此脚本的任何会话数据的任何进一步编辑都将 not 保存。

如果您的脚本位于不同的文件夹中且本地 php.ini 会话名称在这些不同的文件夹中不同,您可能会遇到问题...不同的名称,不同的会议。

Central PHP.ini:

session.name=somethingSessiony

本地文件夹特定的PHP.ini

session.name=somethingsessiony

如果您认为这可能是一个因素,请尝试以下方法:

error_log(__FILE__." : " .print_r(session_name(),true)); 

在清除会话数据的文件和应该读取“空”会话数据的文件中。