Взаимодействие flash и php

Написано 29 August, 2010

Недавно обратился ко мне товарищ с просьбой помочь в реализации 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;

/—————————————————————–

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

Описание

Работающий пример

Дизайн примера меня также впечатлил. Простенько и со вкусом.

Обсудим новый революционный подход к разработке приложений?

Написано 24 August, 2010

В чем заключается сущность революционного подхода?

В том, чтобы дать пользователю возможность самостоятельно определять функциональность своих приложений.

Мне кажется, это просто реализовать. Предположим, мы программируем что-то вроде OpenOffice. Основная идея софта такого рода - дать пользователю возможность записывать в текстовом виде информацию. Ну вот мы и даем пользователю такую возможность - базовый функционал - Сохранить, Загрузить, Скопировать, Вставить.

Собственно, больше ничего и не нужно. Наша первая версия софта готова. Главное меню это пункты: Файл, Правка, Справка.

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

Поэтому в нашей версии не работают сочетания клавиш, нет панелей инструментов, ну и, в качестве мелочи - программа не спрашивает нас при закрытии окна, следует ли сохранить набранный ранее текст, а просто закрывает окно. Также в нашей версии отсутствует возможность менять шрифт. Отсутствует контекстное меню. Копирование и вставка производится посредством выделения мышью и последующим открытием пункта меню Правка.

Что мы получили?

Готовый проект. Максимально упрощенный текстовый редактор, который можно использовать для обучения. Удовлетворение нужд некоторых начинающих пользователей компьютера.

Скажу еще вот что: мы получили готовый инструмент для решения строго определенного класса задач, который вполне может устроить определенную группу пользователей.

Это начинающие пользователи. Они только вчера купили компьютер. Они взяли в руки самоучитель по компьютеру сегодня и упали в обморок от обилия информации в нем.
Вопрос от приложения к ним приводит их в ужас. Я надеюсь, таких уже не осталось, тем не менее… Так вот эта наша версия редактора как раз для них. Она не потребует от них выучить что-то больше чем то, что они хотели бы.

Думаю, они наступят на грабли, когда закроют приложение без сохранения и тем самым научатся предварительно сохранять свою работу.

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

(продолжение следует)

———
Приготовить утренний кофе вам помогут кофейные автоматы. Быстро, удобно и экономно.

Про капчу и антикапчу

Написано 21 August, 2010

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

Но где же искать выход? Ведь подозрения не так уж и нелепы. Мой Акисмет-антиспам пачками каждый день отправляет комментарии от спам-роботов туда, где Макар телят не пас. А выход можно придумать вот какой:
“Поставьте галочку, если вы не робот.” и рядом чекбокс.

Но, ха-ха, спамеры сильны и могучи. Написать робота, который чекает эту галочку дело нескольких минут. Я бы использовал класс Java Robot для этой гнусной цели.

Тогда, придется чуток проапгрейдить наш антиспам который не_капча. Чекбокс будет всякий раз смещаться по горизонтали на случайное количество пробельных символов. В этом случае хитрому роботу придется отыскивать саму картинку чекбокса, чтобы затем на ней кликнуть.

———
В хорошей мастерской по ремонту иномарок вам всегда помогут отремонтировать стартер, например, поменять втягивающее реле, если оно вдруг забарахлит.

Следующая страница »