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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.06.2009, 11:46
Ragazzo вне форума Посмотреть профиль Отправить личное сообщение для Ragazzo Найти все сообщения от Ragazzo
  № 1  
Ответить с цитированием
Ragazzo

Регистрация: Jan 2006
Сообщений: 27
По умолчанию Отправки данных с AS3 в PHP

Поиски темы по данному вопросу не дали результатов. Был вынужден всё-таки открыть эту тему.

В Adobe Flash CS3 на AS3 есть форма. Необходимо передать данные с этой формы во внешний php-файл.
Посмотрел кое-какие исходники, но данные всё равно не отправляются ...

Ниже привел код на AS3 и PHP:

Код AS3:
contact_name.text = contact_email.text = contact_subject.text = 
contact_message.text = message_status.text = "";
 
send_button.addEventListener(MouseEvent.CLICK, submit);
reset_button.addEventListener(MouseEvent.CLICK, reset);
 
var timer:Timer;
var var_load:URLLoader = new URLLoader;
var URL_request:URLRequest = new URLRequest( "send_email.php" );
URL_request.method = URLRequestMethod.POST;
 
function submit(e:MouseEvent):void
{
	if( contact_name.text == "" || contact_email.text == "" ||
		contact_subject.text == "" || contact_message.text == "" )
	{
		message_status.text = "Необходимо заполнить все поля.";
	}
	else if( !validate_email(contact_email.text) )
	{
		message_status.text = "Неправильный e-mail";
	}
	else
	{
		message_status.text = "отправляем...";
 
		var email_data:String = "name=" + contact_name.text
					   + "&email=" + contact_email.text
					   + "&subject=" + contact_subject.text
					   + "&message=" + contact_message.text;
 
		var URL_vars:URLVariables = new URLVariables(email_data);
		URL_vars.dataFormat = URLLoaderDataFormat.TEXT;
 
		URL_request.data = URL_vars;
		var_load.load( URL_request );
		var_load.addEventListener(Event.COMPLETE, receive_response );
	}
}
 
function reset(e:MouseEvent):void
{
	contact_name.text = contact_email.text = contact_subject.text = 
	contact_message.text = message_status.text = "";
}
 
function validate_email(s:String):Boolean 
{
	var p:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/;
	var r:Object = p.exec(s);
	if( r == null ) 
	{
		return false;
	}
	return true;
}
 
function receive_response(e:Event):void
{
	var loader:URLLoader = URLLoader(e.target);
    var email_status = new URLVariables(loader.data).success;
 
	if( email_status == "yes" )
	{
		message_status.text = "Ваше сообщение успешно отправлено.";
		timer = new Timer(500);
		timer.addEventListener(TimerEvent.TIMER, on_timer);
		timer.start();
	}
	else
	{
		message_status.text = "Ошибка. Сообщение не отправлено.";
	}
}
 
function on_timer(te:TimerEvent):void 
{
	if( timer.currentCount >= 10 )
	{
		contact_name.text = contact_email.text = contact_subject.text = 
		contact_message.text = message_status.text = "";
		timer.removeEventListener(TimerEvent.TIMER, on_timer);
	}
}

PHP код:
<?php

    
/* Соединяемся, выбираем базу данных */
    
$link mysql_connect("localhost""root""")
        or die(
"Could not connect : " mysql_error());
    print 
"Connected successfully";
    
mysql_select_db("dbname") or die("Could not select database");
    
$contact_name $_POST['name'];
$contact_email $_POST['email'];
$contact_subject $_POST['subject'];
$contact_message $_POST['message'];
$date date();

echo 
$contact_name;
echo 
$contact_email;
echo 
$contact_subject;
echo 
$contact_message;

if( 
$contact_name == true )
{
    
$sender $contact_email;
    
$receiver "yourname@yourdomain.com";
    
$client_ip $_SERVER['REMOTE_ADDR'];
    
$email_body "Name: $contact_name \nEmail: $sender \n\nSubject: $contact_subject \n\nMessage: \n\n$contact_message \n\nIP: $client_ip \n\nFlash Contact Form provided by http://www.flashmo.com";        
    
$extra "From: $sender\r\n" "Reply-To: $sender \r\n" "X-Mailer: PHP/" phpversion();

    if( 
mail$receiver"Flash Contact Form - $contact_subject"$email_body$extra ) ) 
    {
        echo 
"success=yes";
    }
    else
    {
        echo 
"success=no";
    }
}

    
/* Выполняем SQL-запрос */
    
$query "INSERT INTO gaf VALUES ('".$contact_name."', '".$contact_email."', '".$contact_subject."', '".$contact_message."', '".$date."')";
    
$result mysql_query($query) or die("Query failed : " mysql_error());
    
    
/* Закрываем соединение */
    
mysql_close($link);
?>
Или может что-то не так в php коде?
В любом случае, хотелось бы посмотреть образец правильного кода отправки данных с AS3 в PHP

Старый 06.06.2009, 12:12
lanc666 вне форума Посмотреть профиль Отправить личное сообщение для lanc666 Найти все сообщения от lanc666
  № 2  
Ответить с цитированием
lanc666

Регистрация: Jun 2009
Сообщений: 8
Код:
$query = "INSERT INTO gaf VALUES ('".$contact_name."', '".$contact_email."', '".$contact_subject."', '".$contact_message."', '".$date."')";
Иньекция сразу надо юзать mysql_real_escape_string и сделать проверку POST входящих данных )

Код:
if( $contact_name == true ) if (isset($contact_name))

echo $contact_name;
echo $contact_email;
echo $contact_subject;
echo $contact_message;
если этот кусок работает то проблема в if( $contact_name == true )


Последний раз редактировалось iNils; 06.06.2009 в 12:18.
Старый 06.06.2009, 12:19
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
lanc666, для оформления своего кода надо использовать теги [code][/code]
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 06.06.2009, 22:49
SunShadow вне форума Посмотреть профиль Отправить личное сообщение для SunShadow Найти все сообщения от SunShadow
  № 4  
Ответить с цитированием
SunShadow
 
Аватар для SunShadow

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Лично я для проверки того что ушло в пхп и пришло обратно пользуюсь таким способом:
1) Устанавливаем себе Alcon (кстати спасибо за него Негуру, спасибо что познакомил)))
2)В загрузчик добавляем
Код AS3:
	import com.hexagonstar.util.debug.Debug;
И собственно в самом загрузчике определяем

Код AS3:
		/**
		 * Метод используется для отправки данных на сервер и получения ответа
		 * @param	_url адрес для передачи
		 * @param	_variables - переменные передаваемые внутри запроса
		 */
		public function sendAndLoadData(_url:String, _variables:URLVariables = null):URLLoader
		{
			var url:URLRequest = new URLRequest(_url);
			url.method = URLRequestMethod.POST;
			if (debugRegim) {
				Debug.trace(_url + (_variables!= null ? "?" + _variables.toString() : ""));
			}
			var loader:URLLoader = new URLLoader();
			loader.dataFormat = URLLoaderDataFormat.TEXT;
			if (_variables)
			{
				url.data = _variables;
			}
 
                                      loader.addEventListener(Event.COMPLETE, hnCompleteLoad);
 			loader.addEventListener(ProgressEvent.PROGRESS, hnProgress);
			loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, hnSecurityError);
			loader.addEventListener(IOErrorEvent.IO_ERROR, hnIoError);	
           try {
                loader.load(url);
            } catch (error:Error) {
                if (journal)
                {
					updateInfo("Не удалось загрузить данные с сервера.");
				}
            }
			return loader;
        }
Код AS3:
private function hnCompleteLoad(event:Event):void {
				if (debugRegim) {
					Debug.trace('Полученные данные :');
					Debug.trace(event.target.data);				
				}
		}
3) Перед запуском флэш необходимо запустить Alcon. После старта флэш в трейсе будет видно все движения на сервер и обратно.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
php

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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