session_destroy() 不适用于服务器上的 PHP >7.0
session_destroy() doesn't work with PHP >7.0 on server
我是 Whosebug 的新手,但我不是 PHP 的新手。
现在我有一个有趣的问题:
我在本地使用 XAMPP 7.1.11 和 PHP 7.1.11 进行开发,正在使用
从会话中注销
$_SESSION = array();
session_destroy();
在 logout.php 文件中。在页面顶部有一个
session_start();
过去一切都没有任何问题。
现在我在供应商那里做了一个 php 的版本更改,从 PHP 7.0 到 7.1 并且不可能再注销了,会话信息似乎没有被删除。
我搜索了互联网,但没有找到有用的提示,提供商让我去问一些 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 主题。
Note: You do not have to call session_destroy() from usual code. Cleanup $_SESSION array rather than destroying session data.
- 来自 the manual
向我们展示您设置的代码页$_SESSION = array();
这应该是您需要做的全部。检查您是否在这个页面上设置了session_start();
:
session_start();
$_SESSION = []; //empty the array.
--End of file.
如果你想绝对确定它工作正常你可以尝试使用这样的东西:
session_start();
$_SESSION = []; //empty array.
session_write_close();
但请注意,一旦脚本完成,对该脚本的任何会话数据的任何进一步编辑将不会保存。
如果您的脚本位于不同的文件夹中并且 local php.ini 会话名称不同,您也可能会遇到问题在这些不同的文件夹中...不同的名称,不同的会话。
中环PHP.ini:
session.name=somethingSessiony
本地文件夹特定 PHP.ini
session.name=somethingsessiony
如果您觉得这可能是一个因素,请尝试以下操作:
error_log(__FILE__." : " .print_r(session_name(),true));
在清除会话数据的文件和应该读取 "empty" 会话数据的文件中。
我是 Whosebug 的新手,但我不是 PHP 的新手。 现在我有一个有趣的问题:
我在本地使用 XAMPP 7.1.11 和 PHP 7.1.11 进行开发,正在使用
从会话中注销$_SESSION = array();
session_destroy();
在 logout.php 文件中。在页面顶部有一个
session_start();
过去一切都没有任何问题。 现在我在供应商那里做了一个 php 的版本更改,从 PHP 7.0 到 7.1 并且不可能再注销了,会话信息似乎没有被删除。 我搜索了互联网,但没有找到有用的提示,提供商让我去问一些 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 主题。
Note: You do not have to call session_destroy() from usual code. Cleanup $_SESSION array rather than destroying session data.
- 来自 the manual
向我们展示您设置的代码页$_SESSION = array();
这应该是您需要做的全部。检查您是否在这个页面上设置了session_start();
:
session_start();
$_SESSION = []; //empty the array.
--End of file.
如果你想绝对确定它工作正常你可以尝试使用这样的东西:
session_start();
$_SESSION = []; //empty array.
session_write_close();
但请注意,一旦脚本完成,对该脚本的任何会话数据的任何进一步编辑将不会保存。
如果您的脚本位于不同的文件夹中并且 local php.ini 会话名称不同,您也可能会遇到问题在这些不同的文件夹中...不同的名称,不同的会话。
中环PHP.ini:
session.name=somethingSessiony
本地文件夹特定 PHP.ini
session.name=somethingsessiony
如果您觉得这可能是一个因素,请尝试以下操作:
error_log(__FILE__." : " .print_r(session_name(),true));
在清除会话数据的文件和应该读取 "empty" 会话数据的文件中。