2011-01-27 19 views
0

たとえば、私はflash swfゲームを持っていると言います。ユーザーがconnectを押すとランダムなIDが割り当てられ、それがmysqlテーブルに入れられます。それから私は接続し、これらのランダムIDに接続することができる他のユーザーがあります。ユーザーが切断をクリックすると、他の人が接続したいときにテーブルから取り出されたIDを持っているので、アクティブではないIDが表示されません。それは、ウィンドウがPHPスクリプトを実行するために閉じられている可能性がありますか?だから私は自分のユーザーIDをクリアすることができますか?誰かがブラウザウィンドウを閉じるときにphp関数を実行することはできますか?

+1

を使用しています。人々はネットワーク接続を失い、ブラウザがクラッシュする可能性があります。しばらくの間非アクティブだったログインを定期的に消去する必要があります。 – Quentin

+0

@David:それはこの質問に対する唯一の正解です。なぜそれを答えにしないのですか? – weltraumpirat

+0

あなたが信頼できない人と一緒に暮らそうとする限り、道があるからです。 – Quentin

答えて

1

使用することは、あなたがHTML(フラッシュの外)でのJavascriptのビットでこれを行うことができ

var clicked = false; 

document.onclick = function() 
{ 
//alert(event.srcElement.tagName); 
    if(event.srcElement.tagName) 
     clicked=true; 
} 
var IE = document.all?true:false 

// If NS -- that is, !IE -- then set up for mouse capture 
if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) { 


    } else if (window.sidebar) { 
    clicked= true; 

    } else { 
    if(window.opera && window.print) clicked= false; 
    } 
</script> 

<script> 
function doUnload() 
{ 

    urlstring = "http://www.google.com/popup.php";// add popup url 
      window.open(urlstring,'mywin',"height=400px,width=500px,status=no,toolbar=no"); 

} 



</script> 


<body onbeforeunload="if(!clicked) doUnload(); "> 
+0

+1ですが、上記のコメントのように、すべての状況で動作することを100%保証することはできません。 – automaticoo

+0

@automaticooよく私のアプリケーションは、AIMのようなものに似たWebアプリケーションであり、ユーザーはログインしています。mysqlデータベースからユーザー情報を取得し、その表示方法を示します。チャットから「切断」をクリックするのではなく、ブラウザを閉じるときに「オンライン」リストからユーザーを削除するソリューションが必要です。別の方法があれば私はそれを行うためにidの愛を考えることができるが、これは私のcronの仕事に加えて今のための良い解決策に思われる – brybam

0

をonbeforeunload。この例では、jQuery's .unload()

<script type="text/javascript"> 
$(window).unload(function() { 
    $.ajax({ url: "clear_user_id.php"}); 
}); 
</script> 
関連する問題