2011-03-07 6 views
0

누군가가 문제에 대한 통찰력을 제공 할 수 있었으면 좋겠다. 해결 방법을 결정하는 데 어려움을 겪고있다.변수 FROM 플래시를 HTML/php로 넘김

사용자가 연결되어있을 때 빠른 사용자 이름을 만들 수있는 간단한 플래시 응용 프로그램이 있으며 사용자 이름은 플래시 swf 내에 만들어집니다.

이제 10 분마다 (이 사용자 이름이 저장되고 다른 사용자가 온라인에 액세스하는 mysql 데이터베이스에서) 비활성 사용자 이름을 삭제하는 cron 작업이 있습니다. 그러나 사람들이 한꺼번에 서명을하면 혼란스러워 질 수 있습니다. 크론 작업이 사라지기까지 여전히 10 분의 시간이 있습니다.

사용자는 플래시 응용 프로그램에서 로그 아웃을 클릭하여 좋은 결과를 얻을 수 있습니다. 그러나 물론 많은 사람들이 로그 오프를 클릭하지 않기로 선택하면 브라우저 x를 클릭하기 만하면됩니다.

나는 onbeforeunload와 jquery의 .unload를 살펴 봤지만, 여전히 HTML에 플래시되어있는 username 변수를 얻는 방법이 필요하다. 그리고 PHP 사용자 이름 mysql 쿼리를 실행하기 위해 PHP 스크립트를 사용한다.

더 쉬운 해결책이 있습니까?

그렇지 않은 경우, 사용자 이름을 만든 후에 html에 username 변수를 전달하여 PHP 스크립트를 실행하는 .unload 함수와 관련 될 수있는 방법에 대한 통찰력을 얻으시겠습니까?

EDIT ::::: 아마 PHP에서 숫자의 고유 한 문자열을 생성 한 다음 그 var를 플래시에 전달하여 mysql 행에 포함 시키십시오. 이후 html로 작성된 이후 var가 이미 있으므로 측면, 그냥 언로드와 함께, 그 고유 ID를 가지고 행을 삭제해야합니까?

만약이 아이디어가 가장 좋은 접근 방법이고, md5 (uniqid (microtime())와 같은 것을 사용한다면 $ _SERVER [ 'REMOTE_ADDR']. $ _SERVER [ 'HTTP_USER_AGENT']) iD 어떻게하면 var에 결과를 저장하는 방법에 대해 갈 수 플래시 jarser 언로드 또는 자바 스크립트 onbeforeunload에 플래시 vars 매개 변수에 다시 배치하는 것이 좋습니다. jquery에 더 익숙한 메신저

+0

ExternalInterface를 사용하여 Flash에서 JavaScript 메서드를 호출하거나 그 반대의 경우 그게 네 문제를 해결할 지 모르겠다. – JeffryHouser

답변

1

실제로 ExternalInterface 명령을 호출하여 SWF 구성 요소에서 가져온 HTML에서 숨겨진 필드를 채울 수 있습니다.

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

그리고 당신의 HTML 페이지에서

, 당신은 자바 스크립트 함수 쓰기 :
<script language="javascript" type="text/javascript"> 
function yourJavaScriptFunction(valToPass) 
{ 
    document.getElementById('yourHiddenField').value = valToPass; 
} 

그리고 unload 이벤트에서

이 페이지에서 해고를, 당신은 당신의 SWF에서 전달 된 값에 액세스 할 수 있습니다.

사용자의 로그인 자격 증명을 얻 자마자 SWF에서 javascript 함수를 호출 할 수 있습니다.

희망이 도움이됩니다.

+0

외부 인터페이스가 정확히 필요한 것 같아요! 나는 그것을 가지고있다! 감사! 지금까지는 그것에 대해 몰랐다. – brybam

0

이렇게하려면 URLRequest, URLVariablesURLLoader의 조합을 사용하고 싶습니다. 아래를보십시오.

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 스크립트는 해당 사용자 이름을 해당 세션에 연결하는 db에 대한 인상을 줄 수 있습니다 (그러나 그렇게하고 싶을 수도 있음).

+0

당신은 sessios라는 단어를 불러 일으켰다 고 생각하게 만들었습니다. 어쩌면 페이지가로드 될 때 아마도 md5 (uniqid (microtime())와 같은 것을 사용하여 sessionid를 작성해야합니다. $ _SERVER [ 'REMOTE_ADDR']. $ _SERVER [ 'HTTP_USER_AGENT']) 그런 다음 사용자 이름이 DB에 추가 될 때 플래시에 해당 var를로드 할 수 있습니다. 그 다음에는 HTML 옆에 sessionID가 있습니다. 어떤 행을 내 jquery .unload 함수에서 mysql을 사용하여 삭제 – brybam

+0

당신은 확실히 그것을 할 수 있습니다. 내가 권하고 싶은 것은 서버가 플래시가 아닌 사용자 이름을 생성하도록 시스템을 변경한다는 것입니다. 위 스크립트를 사용하여 PHP 스크립트를 호출 할 수 있습니다. 스크립트는 위에서 언급 한 세션 정보를 조합하여 해당 사용자 이름과 세션에 대한 db에 레코드를 삽입 한 다음 uid를 플래시 응용 프로그램에 반환 할 수 있습니다. –