Взаимодействие flash и php
Недавно обратился ко мне товарищ с просьбой помочь в реализации flash счетчика.
Сущность в том, что flash сам по себе не сохраняет данные и зайдя на страницу в следующий раз вы не сможете увидеть ваших прошлых достигнутых результатов.
Для этого мы должны воспользоваться помощью какого-нибудь скриптового языка.
Алгоритм следующий:
Нужно подготовить данные во flash
Передать их в скрипт php
Скрипт php обработает эти данные и вернет результат
Результат мы обрабатываем во flash.
Таким образом, всякий раз при выводе счетчика, мы сначала обращаемся к php скрипту,
выводим значение, а затем при окончании работы, отправляем новые данные (то есть те которые изменили свое значение в процессе работы и которые нужно запомнить) все тому же php скрипту
Есть несколько вариантов реализации подобной схемы. Вот один из них:
/———————— clicks_counter.fla ——————————–
var counter:Number = 0;
//изначально в корневой директории сайта
//должен быть сайт message.txt
//содержащий:
//counter=0
//сохраненный в Notepad++
//также должен быть скрипт increment.php
function getAndSetClicks():Void
{
//функция должна получить значение от файла на сайте
//внимание: в файле message.txt
//хранится значение переменной counter в виде
//counter=`какое-то число`
messageURL = “message.txt”;
var myVars_obj = new LoadVars();
myVars_obj.onLoad = function( success )
{
if(success)
{
click_counter.text = “Number of clicks: ” + myVars_obj.counter;
}
else
{
click_counter.text = “Error loading page”;
}
}
myVars_obj.load(messageURL);
}
function checkSuccess()
{
checkSuccess = function (success)
{
if (success && this.result == “Okay”)
{
click_counter.text = “Number of clicks: ” + this.counter;
}
else
{
click_counter.text = “An error has occurred”;
}
}
}
function incrementClicks()
{
//функция вызывает скрипт php
//чтобы он сделал инкремент значения в файле
dataLoader = new LoadVars();
dataLoader.onLoad = checkSuccess;
dataLoader.sendAndLoad(”increment.php”,dataLoader, “POST”);
}
count_btn.onPress = function()
{
incrementClicks();
getAndSetClicks();
}
getAndSetClicks();
/——————————- increment.php ——————-
function create_html_page($page_name, $page)
{
$fp = fopen($page_name , ‘w’);
$test = fwrite($fp, $page);
if (!$test) throw new Exception(’Не могу записать файл ‘.$page_name);
fclose($fp);
}
//print “&result=Okay&n=7″;
if (file_exists(”hits.txt”))
{
$visits = @file(”hits.txt”); // Прочитать содержимое файла в масссив
}
else
{
$visits = array(0);
$visits[0] = 0;
}
$current_visitors = $visits[0]; // Извлечь первый (и единственный) элемент
$current_visitors++; // Увеличить счетчик обращений
$fh = fopen(”hits.txt”, ‘w’);
@fwrite($fh, $current_visitors);// Записать новое значение счетчика в файл “hits.txt”
fclose($fh);
create_html_page(”message.txt”,”counter=”.$current_visitors);
// Report success to Flash
print “&result=Okay&counter=”.$current_visitors;
/—————————————————————–
А вот пример, который я нашел в Сети, правда речь здесь не идет конкретно о счетчике, но приспособить под ваши нужды будет легко:
Дизайн примера меня также впечатлил. Простенько и со вкусом.
