私のサイトでは、ヘッダーに twitter のログアウト セクションが含まれています。これらのログアウト機能では、3 つのファイルが使用されます。ユーザーがログアウトをクリックすると、twitter のログアウト URL が開き、親ウィンドウが更新され、chrome のインデックス ページに移動します。
ただし、Firefox では親ウィンドウが更新されません。セッションが破棄された後でも、ログアウトが表示され、ページのマニュアルを更新するとサインインが表示されます。誰でもこの問題を解決するのを手伝ってくれます
ヘッダー.php
<li><a href="javascript:;" onclick="opennewwindow(); clearsession();">Logout</a></li>
function opennewwindow()
{
var mywin=window.open('twitlogout.php','chindhu','width=550,height=350');
}
function clearsession()
{
var req = GetXmlHttpObject();
req.onreadystatechange = function() {
if(req.readyState == 1) {
document.getElementById('status').innerHTML='<img src="images/ajax-loader.gif"/>';
}
if (req.readyState == 4 ) {
if( req.status == 200) {
document.getElementById('status').innerHTML=req.responseText;
}
else
{
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", "clearsession.php", true);
req.send(null);
}
function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
twitlogout.php
<?php
include("header.php");
header("Location:https://twitter.com/#!/logout");
?>
clearsession.php
<?php include("config/dbconfig.php");?>
<meta http-equiv="refresh" content="2;url=<?php echo URLPATH;?>">
<?php
session_start();
unset($_SESSION['id']);
unset($_SESSION['username']);
unset($_SESSION['oauth_provider']);
session_destroy();
?>