0

私のサイトでは、ヘッダーに 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();
?>
4

2 に答える 2

1

clearsession.phpの結果をステータス要素に追加しています。メタプロパティの更新はヘッダーに含める必要があるため、呼び出されないのはそのためかもしれません。

javascriptにページをリロードさせる最良の方法は、を使用することwindow.location.reload();です。あなたはそれを次の場所に置くことができます:

if( req.status == 200) {
  document.getElementById('status').innerHTML=req.responseText;
  setTimeout(window.location.reload, 2000); //reload after two seconds
} 

リロードの前に2秒のタイムアウトを使用していますが、任意に設定できます。

于 2013-01-03T11:24:14.250 に答える
0

また、関数内に「window.location='our file'」を追加することもできます。しかし欠点は、関数内で clearsession.php が呼び出されたときに URL が表示されることです。

function clearsession()
    {

            window.location="clearsession.php";

    } 
于 2013-01-03T11:31:01.983 に答える