0

解決方法を決めるのに苦労している問題について、誰かが洞察を提供してくれることを願っていました。

ユーザーが接続時に簡単なユーザー名を作成できるかなり単純なフラッシュアプ​​リケーションがあり、ユーザー名はフラッシュswf内に作成されます。

現在、非アクティブなユーザー名を 10 分ごとに削除する cron ジョブがあります (これらのユーザー名がすべてオンラインで保存され、他のユーザーがアクセスする mysql データベース上)。しかし、大勢の人が一度にサインオフすると、まだ混乱する可能性があります。cron ジョブがそれらをクリアするまでに、まだ 10 分間のウィンドウがあります。

ユーザーには、Flash アプリケーションで [ログアウト] をクリックするオプションがあり、これは問題なく機能します。しかしもちろん、多くの人はログオフをクリックせずにブラウザの x をクリックするだけです。

onbeforeunload と jquery の .unload を調べましたが、HTML にフラッシュされているユーザー名変数を取得し、php スクリプトを使用してユーザー名の削除 mysql クエリを実行する方法が必要です。

もっと簡単な解決策はありますか?

そうでない場合、ユーザーがユーザー名を作成した後、ユーザー名変数をhtmlに渡して保持する方法についての洞察はありますか?

編集::::: phpでUNIQUE文字列の数字を作成し、その変数をフラッシュに渡してmysql行に含める方法があるかもしれません.html側で作成されたので、その変数がすでにあるのでアンロードで、その一意の ID を持つ行を削除しますか?

誰かがこのアイデアを考えるのが最善の方法であり、 md5(uniqid(microtime()) . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) のようなものを使用してランダムなiDを作成した場合、どうすればよいでしょうか結果を var に保存して、flash vars param に配置してから、jquery unload または javascript onbeforeunload に配置する方がよい場合。私はjqueryにもっと精通しています

4

2 に答える 2

1

実際には、ExternalInterface コマンドを呼び出して、SWF コンポーネントからの HTML に hiddenfield を設定することができます。

if (ExternalInterface.available) 
{
  var js:String = "yourJavaScriptFunction";
  var valToPass:String;
  ExternalInterface.call(js(valToPass));
}

HTML ページで、JavaScript 関数を記述します。

<script language="javascript" type="text/javascript">
function yourJavaScriptFunction(valToPass)
{
  document.getElementById('yourHiddenField').value = valToPass;
}

また、ページによって起動された unload イベントから、SWF から渡された値にアクセスできます。

ユーザーのログイン資格情報を取得するとすぐに、SWF から JavaScript 関数を呼び出すことができることに注意してください。

お役に立てれば。

于 2011-03-07T22:16:26.943 に答える
0

これを行うには、 URLRequestURLVariables、およびURLLoaderの組み合わせを使用します。以下を参照してください。

var myData:URLRequest = new URLRequest("some.php");
myData.method = URLRequestMethod.POST;

var variables:URLVariables = new URLVariables();
variables.username = 'CREATED USERNAME';

myData.data = variables;

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, dataOnLoad);
loader.load(myData);

function dataOnLoad(evt:Event){
    trace('Completed');
}

これにより、'$_POST['username']' に格納されたユーザー名で 'some.php' ファイルが呼び出されます。その後、php スクリプトは、そのユーザー名をそのセッションにリンクするデータベースに影響を与えることができます (ただし、そうしたい場合)。

于 2011-03-07T21:36:56.550 に答える