Передача переменной FROM flash в HTML / php

Я надеялся, что, может быть, кто-нибудь сможет дать некоторое представление о проблеме, которую я с трудом решаю.

У меня есть довольно простое флеш-приложение, пользователи могут быстро создать логин при подключении, а имя пользователя создается внутри флеш-файла swf.

Теперь у меня есть задание cron, удаляющее неактивные имена пользователей каждые десять минут (в моей базе данных mysql, где все эти имена пользователей хранятся и доступны другим людям в сети), и это нормально. Но он все равно может быть загроможден, если сразу несколько людей выйдут из системы, еще есть 10-минутное окно, прежде чем задание cron очистит их.

У пользователей есть возможность щелкнуть по выходу из системы во флеш-приложении, что нормально и отлично работает. Но, конечно, многие предпочитают не нажимать кнопку выхода, а просто щелкают значок браузера x.

Я изучил onbeforeunload и jquery .unload, но мне все еще нужен способ получить переменную имени пользователя, которая ВСТАВЛЯЕТСЯ во флеш-память, В HTML, а затем использовать скрипт php для запуска запроса mysql на удаление имени пользователя.

Есть ли решение попроще?

Если нет, то какое представление о том, как я могу передать переменную имени пользователя в html, чтобы сохранить ее после того, как пользователь сделает свое имя пользователя, чтобы его можно было задействовать с функцией .unload, запускающей скрипт php?

ИЗМЕНИТЬ ::::: с выгрузкой удалить строку с этим уникальным идентификатором?

Если бы кто-то понял, что эта идея будет лучшим подходом, и если бы я использовал что-то вроде md5 (uniqid (microtime ()). $ _SERVER ['REMOTE_ADDR']. $ _SERVER ['HTTP_USER_AGENT']), чтобы создать случайный идентификатор, как я мог бы сохранить результат в var, который я мог бы поместить в параметр flash vars, а затем снова в jquery unload или javascript onbeforeunload, если это будет лучше. я просто более знаком с jquery


person brybam    schedule 07.03.2011    source источник
comment
Используйте ExternalInterface для вызова метода JavaScript из Flash [и наоборот]. Я не знаю, решит ли это вашу проблему.   -  person JeffryHouser    schedule 08.03.2011


Ответы (2)


Фактически вы можете вызвать команду ExternalInterface для заполнения скрытого поля в вашем HTML-коде, поступающем из вашего SWF-компонента.

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;
}

А из события выгрузки, инициированного вашей страницей, вы можете получить доступ к значению, которое было передано из вашего SWF.

Обратите внимание, что вы можете вызвать функцию javascript из SWF, как только получите учетные данные вашего пользователя.

Надеюсь это поможет.

person Batuta    schedule 07.03.2011
comment
Я думаю, что внешний интерфейс был именно тем, что мне было нужно! У меня все работает! Спасибо! не знал об этом до сих пор. - person brybam; 08.03.2011

Вы хотите использовать комбинацию URLRequest, URLVariables и 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');
}

Затем это вызовет файл 'some.php' с вашим именем пользователя, хранящимся в '$ _POST [' username ']'. Затем ваш php-скрипт может произвести впечатление на базу данных, связывающую это имя пользователя с этим сеансом (однако вы хотите это сделать).

person Stephen Walcher    schedule 07.03.2011
comment
Вы вспомнили слово sessions, заставили меня задуматься ... Может, мне просто нужно создать sessionid, когда страница загружена, возможно, используя что-то вроде md5 (uniqid (microtime ()). $ _SERVER ['REMOTE_ADDR']. $ _SERVER ['HTTP_USER_AGENT']), тогда я могу загрузить эту переменную во флеш-память, когда имя пользователя добавляется в БД ... тогда у меня есть идентификатор сеанса на стороне HTML, поскольку он был создан там ... и просто используйте его для ссылки на который строка для удаления с помощью mysql в моей функции jquery .unload - person brybam; 08.03.2011
comment
Вы определенно можете это сделать. Однако я рекомендую вам изменить систему так, чтобы сервер генерировал имя пользователя, а не флеш-память. Вы можете вызвать php-скрипт (используя вышеизложенное). Сценарий может собрать информацию о сеансе, о которой вы упомянули, вставить запись в базу данных для этого имени пользователя и сеанса, а затем вернуть uid в ваше флэш-приложение. - person Stephen Walcher; 08.03.2011