我想在重定向之前清除会话值。在我的logout.php中,我有会话destry代码。这段代码运行得很好,如果我返回行重定向代码。如果我包括重定向代码,它会在会话终止前重定向。
<?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");
}
?>
使用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");
}
我相信Raheel Khan的答案是正确的。如果header("Location:login.php")不起作用,请验证您的代码在php打开标记之前是否有空格
<?
在标头之前不能将任何内容发送到浏览器。如果您向浏览器发送任何内容,则头重定向将不起作用。