Я новичок в 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));
И в файле, который очищает данные сеанса, и в файле, который должен считывать «пустые» данные сеанса.
Других решений пока нет …