我想在重定向之前清除会话值。在我的logout.php中,我有会话destry代码。这段代码运行良好如果我执行重定向代码行。如果我包含重定向代码,它会在会话终止之前重定向。
<?php
session_start();
session_unset();
$_SESSION = array();
session_destroy();
/*
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.location.href='login.php';
</SCRIPT>");
*/
?>
答案 0 :(得分:2)
你需要通过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");
}
?>
答案 1 :(得分:0)
使用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");
}
?>
答案 2 :(得分:0)
会话破坏后调用重定向
<?php
if(session_destroy())
{
header("location: login.php");
}
答案 3 :(得分:0)
我相信Raheel Khan的回答是正确的。如果标题(“位置:login.php”)无效,请验证您的代码在php打开标记之前是否有空格
<?
在标题之前无法向浏览器发送任何内容。如果您向浏览器发送任何内容,则标题重定向将无效。