销毁用于注销的会话变量

时间:2015-03-03 08:10:04

标签: php session

我想在重定向之前清除会话值。在我的logout.php中,我有会话destry代码。这段代码运行良好如果我执行重定向代码行。如果我包含重定向代码,它会在会话终止之前重定向。

<?php
session_start();
session_unset(); 
$_SESSION = array();
session_destroy();
   /*
     echo ("<SCRIPT LANGUAGE='JavaScript'>
       window.location.href='login.php';
       </SCRIPT>"); 
    */ 
?>

4 个答案:

答案 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打开标记之前是否有空格

<?

在标题之前无法向浏览器发送任何内容。如果您向浏览器发送任何内容,则标题重定向将无效。