ЧТО ТАКОЕ FLASH

      УРОКИ

      УЧЕБНИКИ

      ПРИМЕРЫ

      ССЫЛКИ

      DOWNLOADS

  PHP & Flash.

Итак, с этого урока мы начнем программировать на Flash и PHP. Для того, чтобы вы поняли то, что здесь будет описываться, у вас должны быть базовые знания по Flash и PHP. Но если вы не хотите ничего понимать, и вам нужно просто воспользоваться приведенными здесь примерами, то вам достаточно уметь открывать программу Macromedia Flash и Блокнот =). Я постараюсь описать каждое действие так, чтобы вам все-таки было понятно, и вы не закидывали меня глупыми вопросами. Итак-с... приступим...

Текстовые поля во Flash

Давайте сначала как следует разберем текстовые поля во Flash, чтобы потом не возникало вопросов. Существует 3 типа текствоых полей:

  1. Static Text - обычный текст. Имеет два модификатора:
    • Use Devise Fonts - включить использование шрифтов устройств пользователя (желательно применять только для латиницы).
    • Selectable - возможность выделения и копирования текста.

  2. Dinamic Text - динамический редактируемый текст. Позволяет изменять содержимое текствого поля в процессе всего выполнения ролика. Чаще всего используется для вывода текста через ActionScript. Имеет следующие модификаторы:
    • Sing Line - однострочное текстовое поле.
    • MiltiLine - многострочное текстовое поле. При включении данного режима появляется возможность автоматического переноса текста по словам Word Wrap.
    • Variable - имя текстового поля, которое становится глобальной переменной, значением которой является текст, содержащийся в текстовом поле.
    • HTML - режим поддержки html-тэгов.
    • Border/Bg - отображение фона поля и границы текстового поля в виде тонкой рамки.
    • Selectable - возможность выделения и копирования текста.
    • Embed Fonts - возможность ограничения вводимых в текстовое поле символов: все символы, только прописные или только строчные, цифры, знаки препинания. Можно указать символы самостоятельно.

  3. Input Text - текстовое поле для ввода информации пользователем. Помимо всех тех же модификаторов, что и Dinamic Text, имеет еще два:
    • Password - визуальная замена звездочками всех символов, вводимых в текстовое поле.
    • Max Chars - максимальное допустимое количество символов для ввода.

Вот мы и разобрали все типы текстовых полей и их модификаторы. Теперь у вас не должно возникать никаких вопросов по этому поводу.

Отсылка данных скрипту

Сейчас перейдем, если не к самой главной, то к важной теме - отсылки данных скрипту. Итак, как мы уже знаем, при создании динамического или вводного поля для его идентификации нужно вводить в поле "Variable" имя этого поля, которое будет являться глобальной переменной со значением текста, содержащегося в этом текстовом поле. Вот как раз и эти переменные с их значениями нужно отослать скрипту. А это делается довольно-таки легко: нам просто нужно создать в том же фрэйме, где и текстовые поля, кнопку с таким ActionScript:

on (press) {
getURL("send.php","_blank","POST");
}
[AS.1]

или

on (press) {
loadVariablesNum("send.php", 0, "POST");
}
[AS.2]

В первом случае мы открываем скрипт "send.php" в новом окне и передаем ему наши данные с помощью метода "POST". Во втором случае мы тоже отсылаем данные скрипту "send.php" методом "POST", но никаких новых окон не появляется и страница с Flash-роликом "остается на месте", т.о. данные отсылаются скрипту, но незаметно для человека, просматривающего ролик... Можно отсылать данные и функцией "loadVariables", и с помощью метода "GET", но я привык использовать эти два скрипта, так что будем пользоваться ими. Небольшой пример. У нас есть в одном фрэйме два вводных текстовых поля [первое с именем "name", второе с именем "email"] и одна кнопка с ActionScript "AS.2". Введем в текстовое поле "name" - Vasya Pupkin, а в текстовое поле "email" - vasya@pupkin.ru. Теперь при нажатии на кнопку скрипту передадутся переменная "name" со значением "Vasya Pupkin" и переменная "email" со значением "vasya@pupkin.ru". Вот так все просто. Давайте перейдем к более серьезным примерам.

Отсылаем сообщение из Flash-ролика на заданный e-mail

Способ 1.

Скачать исходник

Итак перед нами стоит такая задача: сделать Flash-ролик, в котором будет форма, состоящая из текстовых полей ["Ваше имя", "Ваш email", "Тема письма", "Текст письма"] и кнопки, которая будет отсылать данные скрипту, который нам тоже нужно написать, чтобы отправить введенное сообщение на наш e-mail. Итак-с... начнем-с...
Сначала создадим два фрэйма и в каждый из них добавим команду "stop();". Затем добавим в первый фрэйм 3 текстовых поля типа "Input Text" с модификаторами Single Line и Border/Bg. Расположим их вертикально, одно текстовое поле над другим. Самое верхнее назовем "name" и слева него напишем "Ваше имя", в это поле человек, пожелавший отослать нам письмецо, будет вводить свое имя. Текстовое поле, расположенное ниже, назовем "email" и слева него напише "Ваш email", для чего оно, думаю, понятно. Самое нижнее поле назовем "subj" и слева него напишем "Тема письма", тоже вопросов не должно быть. Теперь создадимм еще одное текстовое поле типа "Input Text" с модификаторами MultiLine, WordWrap и Border/Bg. С помощью мыши растянем его по вертикали, чтобы было видно, что это многострочное поле и сюда надо вводить много текста =). Назовем это поле "text" и слева него напишем "Текст письма". Пришла пора сделать "мостик" между Flash и PHP - кнопку. Нарисуем какую-нибудь фигуру произвольной формы [я нарисовал прямоугольник с закругленными улами :o] и напишем на ней "Отправить". Затем преобразуем все это в символ "button" и добавим этой свеженькой кнопке такой ActionScript:

on (press) {
if (length(email) < "5" || length(text) < "5") {
getURL("javascript:alert('Вы заполнили не все об\xFFзательные пол\xFF');");
} else {
loadVariablesNum("send.php", 0, "POST");
play();
}
}

Здесь мы применили полученные знания из прошлого урока "Взаимодействие Flash, Html и JavaScript". Что же мы делаем: при нажатии кнопки идет проверка, если длина email'a или текста письма меньше, чем 5 символов, то выводим диалоговое окно Alert с сообщением "Вы заполнили не все обязательные поля" [т.к. Flash 5 не понимает маленькую букву "я", мы заменяем ее шестнадцатеричным кодом "\xFF"], иначе, если все ОК, то тихо и незаметно передаем данные скрипту "send.php" методом "POST" и проигрываем ролик дальше, ну а так как у второго кадра стоит action "stop();", то комада "play()" равносильна команде "gotoAndStop(2);". Во втором кадре напишем сообщение, что письмо успешно отправлено на наше мыло. Желательно еще и сделать кнопочку для перехода к первому кадру, чтобы пользователь мог еще отправить нам свое заветное письмо [ой, ой, ой... а если злостный спамер или флудер попадет на нашу страницу =) ]. Дальше экспортируем ролик с именем "mailfriend.swf". Итак, Flash-ролик готов! Еще раз проверьте, все ли вы сделали правильно. Если все ОК, то можно идти дальше!
Осталось нам написать скрипт на самом ИМХО рулезном языке web-программирования - PHP [фанатов Perl и ASP прошу не спамить мне на мыло =) ]. Особо вдаваться в фунции PHP не буду, т.к. это не входит в рамки нашей рассылки, но все же постараюсь дать комментарий каждой строке. Итак, откроем Блокнот или любой другой текстовый редактор, создадим файл "send.php" и начнем писать в нем скрипт.

Начинаем php-блок и создаем переменную, в которой будет содержаться e-mail, на который нужно отсылать сообщение:

<?
$my_email = "keeper@flashteacher.ru";

Проверяем с помощью оператора "if()", были ли отправлены данные из Flash-ролика, и если были, то отсылаем сообщение с помощью функции "mail();" :

if ($email && $text) {
@mail("$my_email",$subj,$text,"FROM: "."$name<$email>");

Иначе, если данные не были отправлены, то закрываем php-блок...

} else {
?>

...и выводим сам Flash-ролик:

<html><body bgcolor="#7A7B78"><center><br>
<table width="402" border="0" cellspacing="1" cellpadding="0" bgcolor="#000000">
<tr><td><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/
flash/swflash.cab#version=5,0,0,0" width="400" height="250">
<param name=movie value="mailfriend.swf">
<param name=quality value=high>
<param name=menu value=false>
<embed src="mailfriend.swf" quality=high menu=false pluginspage="http://www.macromedia.com/shockwave/download/
index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/
x-shockwave-flash" width="400" height="250">
</embed>
</object></td></tr>
</table>
</center></body></html>

Затем открываем php-блок, закрываем оператор "if()" и закрываем php-блок:

<?
}
?>

Вот и весь скрипт! И, как вы видите, почти всю его часть занимает вывод нашего Flash-ролика! Думаю, вы найдете, где применить данный урок. Кстати, работать скрипт будет, конечно же, только, если в услуги вашего хостинга входит поддержка PHP, так что ни на каком narod.ru и by.ru даже не пытайтесь пробовать, лучше используйте нижеследующий пример.

Способ 2.

Скачать исходник

Сейчас речь пойдет тоже об отсылке сообщений на e-mail, но без использования PHP, а просто через почтовый клиент пользователя. Дело в том, что много мне писем приходит с этим вопросов, ну а так как мы как раз и говорили сейчас об отсылке сообщения на мыло, то и самое время поговорить еще об одном способе.
Сначала создадим в первом фрэйме два текстовых поля типа "Input Text": 1) с модификаторами Single Line, Border/Bg и 2) с модификаторами MultiLine, WordWrap и Border/Bg. Расположим первое текстовое поле поверх второго, назовем его "subj" и слева напишем "Тема письма", второе текстовое поле назовем "text" и слева напишем "Текст письма". Теперь создадим в этом же фрэйме кнопку и добавми ей такой ActionScript:

on (press) {
email = "keeper@flashteacher.ru";
eml = mailto:"+email+"?subj="+subj+"&body="+text;
getURL(eml);
}

Переменная "email" содержит e-mail, на который нужно отослать письмо. А в переменную "eml" мы формируем запрос "mailto", который содержит у нас два атрибута: "subj" - тема письма по умолчанию и "body" - текст письма по умолчанию. Ну а функцией "getURL()" мы отсылаем запрос почтовому клиенту пользователя. Вот так легко решается проблема, которая волнует очень многих.

Отсылаем из Flash-ролика сообщение на номер icq

Скачать исходник

Вы никогда не думали сделать в своем Flash-ролике форму для отсылки сообщения на ваш номер аськи? Нет? Тогда самое время подумать и реализовать это.
Нам понадобится Flash-ролик, который мы делали вначале для отсылки письма на e-mail способом №1. Если вы не делали этот Flash-ролик, то придется сделать. Ну а если лень, то можете скачать готовый исходник.
Оставьте все те же текстовые поля с их именами и модификаторами, все надписи и кнопку. ActionScript кнопки измените на такой:

on (press) {
if (length(name) < "5" || length(email) < "5" || length(subj) < "5" ||length(text) < "5") {
getURL("javascript:alert('Вы заполнили не все пол\xFF');");
} else {
loadVariablesNum("icq_send.php", 0, "POST");
play();
}
}

Здесь мы добавили проверку на наличие у каждого текстового поля не менее 5 символов, так как для сообщения на icq желательно заполнить все поля. Также мы изменили название скрипта на "icq_send.php". Во втором фрэйме напишите "Ваше сообщение было успешно отправлено на мой номер icq!", чтобы пользователь не гадал, было ли отправлено сообщение или нет. Экспортируйте этот Flash-ролик с именем "icq_send.swf". Теперь займемся скриптом. Откройте Блокнот, создайте новый файл "icq_send.php" и начните в него записывать php-скрипт.

Начинаем php-блок и создаем переменную, в которой будет содержаться номер icq, на который нужно отсылать сообщение:

<?
$icq = "149293352";

Проверяем с помощью оператора "if()", были ли отправлены данные из Flash-ролика, и если были, то формируем заголовок:

if ($name && $email && $subj && $text) {
$submit = "Send Message";
$ref = "http://wwp.icq.com/$to";

$PostData =
"from=".urlencode($name)."&".
"fromemail=".urlencode($email)."&".
"subject=".urlencode($subj)."&".
"body=".urlencode($text)."&".
"to=".urlencode($icq)."&".
"submit=".urlencode($submit);

$len = strlen($PostData);

$nn = "\r\n";

$zapros =
"POST /scripts/WWPMsg.dll HTTP/1.0".$nn.
"Referer: $ref".$nn.
"Content-Type: application/x-www-form-urlencoded".$nn.
"Content-Length: $len".$nn.
"Host: wwp.icq.com".$nn.
"Accept: */*".$nn.
"Accept-Encoding: gzip, deflate".$nn.
"Connection: Keep-Alive".$nn.
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)".$nn."".$nn."$PostData";

Открываем сокет, шлем заголовок и закрываем сокет:

$fp = fsockopen("wwp.icq.com", 80, &$errno, &$errstr, 30);
if(!$fp) { echo "$errstr ($errno)<br>\n"; exit; }
fputs($fp,$zapros);

fclose($fp);

Если данные из Flash-ролика не были отправлены, то закрываем php-блок и...

} else {
?>

...и выводим сам Flash-ролик:

<html><body bgcolor="#7A7B78"><center><br>
<table width="402" border="0" cellspacing="1" cellpadding="0" bgcolor="#000000">
<tr><td><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/
flash/swflash.cab#version=5,0,0,0" width="398" height="248">
<param name=movie value="icq_send.swf">
<param name=quality value=high>
<param name=menu value=false>
<embed src="icq_send.swf" quality=high menu=false pluginspage="http://www.macromedia.com/shockwave/download/
index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/
x-shockwave-flash" width="398" height="248">
</embed>
</object></td></tr>
</table> </center></body></html>

Затем открываем php-блок, закрываем оператор "if()" и закрываем php-блок:

<?
}
?>

Скрипт готов! Опять же, работать все это будет только на хостинге с поддрежкой php. Если нет поддержки php, то можете просто взять урок по отправке письма на мыло вторым способом и заменить переменную "email" на "xxx@pager.icq.com", где xxx - ваш номер icq! Т.о. пользователь просто отправит письмо на e-mail, в зависимости от вашего номера аси, и вы получите текст этого письма уже в аське. Разница этих двух способов в том, что в первом случае сообщение вы получите сразу после отправки, а во втором сообщение может доходить некоторое время. Так что если у вас хостинг поддерживает php, то используйте только первый способ.

ЗЫ: Скрипт для отправки сообщения на icq был взят с сайта web-apteka.km.ru

Подводим итоги

Итак, мы изучили все типы текстовых полей и их модификаторы, научились отсылать данные скрипту, и разобрали очень полезные примеры, которые могут вам пригодиться, например, для возможности обратной связи на вашем Flash-сайте.
Все замечания и пожелания по поводу этого урока присылайте на keeper@flashteacher.ru . Удачи!






Код нашего баннера

flashteach - информационный flash-портал






  Copyright © 2003-2005 FLASHTEACH
  Designed by DeAction WebStudio

Студия веб дизайна DeAction > создание сайтов , редизайн, модернизация, поддержка веб-сайтов, размещение сайтов в интернете, изготовление графических анимированных баннеров
Hosted by uCoz