Я хочу очистить значение сеанса перед перенаправлением. В моем logout.php у меня есть код сеанса. Этот код работает красиво. Если я перенаправляю код кода. Если я включаю код перенаправления, он получает перенаправление перед сеансом убийства.
<?php
session_start();
session_unset();
$_SESSION = array();
session_destroy();
/*
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.location.href='login.php';
</SCRIPT>");
*/
?>
Вам нужно сделать это через заголовки php и поместить его в оператор if, поэтому после уничтожения сеанса он перенаправит вас на login.php
<?php
session_start();
session_unset(); // Also there is no need for unsetting
$_SESSION = array(); //This is useless too.
// use php header instead of javascript
if(session_destroy()) //once you destroy session it automatically unsets all keys
{
header("location: login.php");
}
?>
Я считаю, что ответ Рахил-хана правильный. Если заголовок ("Location: login.php") не работает, проверьте, имеет ли ваш код пробел перед открытием тега php
<?
Ничего не может быть отправлено в браузер перед заголовками. Если вы отправляете что-либо в браузер, перенаправление заголовка не будет работать.
Использовать ob_start()
Эта функция включит буферизацию вывода. В то время как буферизация вывода активна, никакой вывод не отправляется из сценария (кроме заголовков), вместо этого вывод сохраняется во внутреннем буфере.
Содержимое этого внутреннего буфера может быть скопировано в строковую переменную, используя ob_get_contents(). Чтобы вывести то, что хранится во внутреннем буфере, используйте ob_end_flush(). Кроме того, ob_end_clean() будет молча отбрасывать содержимое буфера.
<?php ob_start(); ?>
<?php
session_start();
session_unset();
$_SESSION = array();
if(session_destroy())
{
header("location: login.php");
}
?>
Вызовите перенаправление после сеанса, как это происходит
<?php
if(session_destroy())
{
header("location: login.php");
}