我有一个logout.php
文件实际执行了它所说的内容,通过销毁会话并将它们重定向回登录页面来从应用程序中注销用户。
<?php
session_start();
if( isset( $_SESSION ) &&
!empty( $_SESSION ) )
{
$con = mysqli_connect( "localhost",
"root",
"",
"ctp" );
$associate = $_SESSION[ 'user' ];
date_default_timezone_set( 'Asia/Kolkata' );
$tn = time();
$dateTime = date( "Y-m-d H:i:s",
$tn );
$sql = "INSERT INTO ind_ctp_workflow_log
VALUES ( 'CTPLogoutButton',
'CTP - Logout',
'$associate',
'$dateTime' )";
mysqli_query( $con,
$sql );
unset( $_SESSION );
session_destroy();
header( "Location:index.php?r=site/login" );
}
else
{
echo 'There is no active session<br>\n
echo '<a href = "index.php?r=site/login">\n'
echo ' Click here\n';
echo '</a>\n';
echo 'to login';
}
?>
这适用于Chrome,但不适用于IE,它遵循的工作流程为:
1)登录页面 - 未设置会话,因此显示此页面
2)主页 - 会话设置,所以留在这里,否则转到登录页面
3)注销页面 - 删除会话,转到登录页面
4)登录页面 - 会话设置,转到主页
因此我可以理解,会话不会在IE中被删除。这在Mozilla中也可以正常工作,
在Chrome中,Mozilla第4步更改为
4)登录页面 - 未设置会话,留在这里
SO中的问题非常少,而这些问题都发生在4年前,并且对我的案例没有一个非常有说服力的答案。
答案 0 :(得分:0)
而不是unset($_SESSION)
,请使用:
$_SESSION = array();
session_destroy();