Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > Основные моменты разработки приложений

Рейтинг: 2.00. Голосов: 4.

Создание простого чата. Часть 1. Основы отправки данных

Запись от EndoCrinologist размещена 27.10.2011 в 22:46
Обновил(-а) EndoCrinologist 28.10.2011 в 11:37

Теперь я научу Вас, как отправлять данные на сервер обработки PHP.


Для начала нам нужно создать свой локальный сайт. Для этого:

1) На установленном виртуальном диске в папке home создайте папку с названием chat.ru (название может быть любое)

2) В папке chat.ru создайте папку www и в ней создайте файл index с расширением php (или html, что не принципиально) и напишите следующий код:
PHP код:
<title>Chat.ru</title>
<
center><embed src=chat.swf width=600 height=400></center
3) После установки денвера, если вы подтвердили установку ярлыков на рабочем столе, нажмите на иконку Restart, после которого наш сервер перезапустится и новый сайт chat.ru добавится в список хостов.

После этого, открыв браузер и введя в строку chat.ru (если у вас отключен прокси), появится пустая страница, в титле которой отобразится "Chat.ru".


Теперь займемся созданием клиента, то есть железом:

1) На рабочем поле создайте Dynamic Text с Instance Name info.

2) Создайте поле Input Text с Instance Name vvod.

3) Создайте любой мувик, путем нажатия Ctrl F8. Поместите его на рабочее поле с Instance Name sender.


С железом покончено, переходим к коду.

Для начала пояснение. В нашем случае используется, выражаясь проще, "контейнерная система отправки". То есть, мы создаем большой контейнер, добавляем в него переменные со значениями и затем отправляем на сервер в PHP-файл. Это реализуется так (пишем в том же кадре, где и наше железо):

1) Создадим функцию initProg(), внутри неё пропишите:
Код AS1/AS2:
info.text = "";
2) Выше этой функции пропишите строку:
Код AS1/AS2:
sender.onPress = sendData();
Это функция обработки нажатия и запуска процесса отправки данных.

2) Создадим ниже новую функцию sendData(). Далее, весь код мы писать будем в ней. Сразу же внутри пропишите код:
Код AS1/AS2:
info.text = "Выполняю отправку данных...".
Нужно для того, чтобы хоть как-то визуально отслеживать ход выполнения отправки и получения.

3) Создадим Отправителя наших данных, то есть, контейнер:
Код AS1/AS2:
var dataOut:LoadVars = new LoadVars();
Желательно, чтобы имя Отправителя и получателя были одинаковые, отличаясь только последней частью - In (принятие данных) и Out (отправка данных), поэтому...

4) Создадим Приёмник данных, то есть переменная, которая получит результат обработки скрипта PHP:
Код AS1/AS2:
var dataIn:LoadVars = new LoadVars();
5) Теперь мы укажем ссылку на PHP-файл, который будет обрабатывать наш контейнер с переменными:
Код AS1/AS2:
scrPHP = "script.php";
6) А вот теперь сам процесс создания контейнера. Это непосредственно связано с указанным выше именем отправителя, то есть, наши переменные будут добавляться туда с помощью привязки к имени отправителя. Существуют 2 способа привязки:
I СПОСОБ - с помощью цикла with (){}. Тогда мы указываем внутри скобок имя нашего отправителя и далее внутри указываем те переменные, которые нужно отправить на сервер:
Код AS1/AS2:
with (dataOut){
vvod_name = vvod.text // так как мы будем отправлять переменную, которую введем в поле ввода vvod
}
II СПОСОБ - с помощью привязки через точку. Способ полностью идентичен I-му:
Код AS1/AS2:
dataOut.vvod_name = vvod.text;
Как вы видите, способы ничем не отличаются, если только вам не лень лишний раз писать dataOut.. Особенно, когда у вас сложная программа с огромным количеством переменных (хотя по статистике, на сервере хранится не боле 30-40 значений с одного пользователя). Кстати, строка _name введена для того, чтобы разработчик не путался, что у него действительно в программе, а что у него отправляется на сервер.

Теперь, когда мы сформировали наш контейнер, можно его и отправлять.

7) Пропишем ниже строку отправления данных:
Код AS1/AS2:
dataOut.sendAndLoad(scrPHP, dataIn, "POST");
Объясню данную строку. sendAndLoad отправляет данные dataIn на серверный скрипт scrPHP по типу POST (который является наиболее безопасным по сохранности данных). Переменная dataIn получит ответ после работы скрипта. Пропишите ниже строку:
Код AS1/AS2:
info.text = Данные отправлены. Начинаю прием...".
Сохраните Ваш fla-файл под именем chat.fla в папку, где сохранен index.php.


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

1) Создайте новый файл там же, где index.php и chat.fla под названием, указанным в коде отправки данных (script.php). Откройте его.

2) Как всегда, откроем наши любимые скобочки:
PHP код:
<?php

?>
3) Теперь нам нужно получить наши отправленные файлы с помощью всё тех же приёмников POST- и GET-типов (внутри блока пишем):
PHP код:
$vvod $_POST['vvod_name']; 
Этой строкой мы вылавливаем те значения, которые были отправлены флешем и присваиваем их значения новым переменным.

4) Теперь, когда мы получили наше значение, мы можем с ними что-нибудь сделать. Допустим, это слово будет паролем. И если кодовое слово на сервере (скажем, скрипт) совпадет с переменной vvod, то мы выдадим соответсвующее значение. Реализуем через if(){}:
PHP код:
if ($vvod == "скрипт"){
echo 
"result=1";
} else {
echo 
"result=0";

Сохраните ваш файл.

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

Спасибо за внимание
Всего комментариев 12

Комментарии

Старый 28.10.2011 11:21 Котяра вне форума
Котяра
 
Аватар для Котяра
чат? AS2? php?
Увольте.
Цитата:
I СПОСОБ - с помощью цикла with (){}
Старый 28.10.2011 12:10 EndoCrinologist вне форума
EndoCrinologist
 
Аватар для EndoCrinologist
Увольняю..))
Старый 28.10.2011 13:27 DJDrugsounD вне форума
DJDrugsounD
 
Аватар для DJDrugsounD
былоб попроще на as3 и через сокет
Старый 28.10.2011 13:47 Astraport вне форума
Astraport
 
Аватар для Astraport
А ещё проще p2p
Старый 28.10.2011 17:14 EndoCrinologist вне форума
EndoCrinologist
 
Аватар для EndoCrinologist
я просто объясняю сам принцип работы
Старый 29.10.2011 02:34 Котяра вне форума
Котяра
 
Аватар для Котяра
Цитата:
я просто объясняю сам принцип работы
Кому и где объяснения? Вы только говорите напишите то-то там и там и опубликуйте. Ваши объяснения вредны. Как книги Розенцвейга.
ИМХО, но думаю со мной многие согласны.
Обновил(-а) Котяра 29.10.2011 в 14:53
Старый 29.10.2011 11:21 EndoCrinologist вне форума
EndoCrinologist
 
Аватар для EndoCrinologist
Если вредны, то прошу никого не смотреть. Какая тогда Вам разница, что здесь творится? Это мой блог, где я пишу то, как делаю сам. Вам-то что?
Старый 29.10.2011 11:28 Котяра вне форума
Котяра
 
Аватар для Котяра
Цитата:
Это мой блог
В том то и деле, что не совсем так. Это коллективный блог. Здесь критикуют.
Старый 29.10.2011 11:31 EndoCrinologist вне форума
EndoCrinologist
 
Аватар для EndoCrinologist
Я вижу)
Старый 29.10.2011 13:23 crazyone вне форума
crazyone
 
Аватар для crazyone
Так вот у кого учатся звезды *****код.ру!

Цитата:
Ваши объяснения вредны.
+100500
Старый 29.10.2011 14:52 Котяра вне форума
Котяра
 
Аватар для Котяра
Цитата:
с помощью привязки через точку.
Какая такая привязка через точку?
Цитата:
Создадим Приёмник данных, то есть переменная, которая получит результат обработки скрипта PHP:
Нет. Это не приёмник данных, это загрузчик текстовых данных. И совсем не обязательно их разделять на dataIn и dataOut
Цитата:
Теперь мы укажем ссылку на PHP-файл, который будет обрабатывать наш контейнер с переменными:
Нет - это всего лишь ссылка на текстовый файл, содержание которого генерится php скриптом.
.. в общем по каждой строчке ваших постов - моё решительное - НЕТ НЕ ТАК.
Старый 29.10.2011 16:37 Inet_PC вне форума
Inet_PC
 
Аватар для Inet_PC
Топик стартеру срочно учить мат-часть. Особенно порадовало "железо" и "цикл with".
 

 


Часовой пояс GMT +4, время: 23:24.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.