簡體   English   中英

session_destroy()不適用於服務器上的PHP> 7.0

[英]session_destroy() doesn't work with PHP >7.0 on server

我是stackoverflow的新手,但不是PHP的新手。 現在我有一個有趣的問題:

我正在使用XAMPP 7.1.11和PHP 7.1.11在本地進行開發,並通過

$_SESSION = array();
session_destroy();  

在logout.php文件中。 頁面頂部有一個

session_start();

過去一切都沒有問題。 現在,我在提供程序中將php版本從PHP 7.0更改為7.1,並且無法注銷,會話信息似乎沒有被刪除。 我在互聯網上搜索,但是沒有找到有用的提示,提供程序告訴我詢問一些PHP論壇。

我嘗試了主題中的所有提示

為什么session_destroy()不起作用

session_destroy(); 在帶有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主題。

注意:您不必從常規代碼中調用session_destroy()。 清理$ _SESSION數組而不是破壞會話數據。

向我們展示您的代碼頁,其中您設置了$_SESSION = array(); 這應該是您需要做的所有事情。 檢查您是否設置了session_start(); 頁面上:

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

--End of file.

如果您想絕對確定它可以正常工作,則可以嘗試使用以下方法:

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

但是請注意,腳本完成后,將不會保存對該腳本上任何會話數據的任何進一步編輯。


如果您的腳本位於不同的文件夾中,並且本地 php.ini會話名稱在這些不同的文件夾中不同,則您可能還會遇到問題。不同的名稱,不同的會話。

中央PHP.ini:

 session.name=somethingSessiony 

本地文件夾特定的PHP.ini

 session.name=somethingsessiony 

如果您認為這可能是一個因素,請嘗試以下操作:

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

在清除會話數據的文件和應讀取“空”會話數據的文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM