PDA

Просмотр полной версии : flash+php


Oleg_Rus
10.03.2011, 18:10
Здравствуйте!

У меня возникла следующая проблема - не получается совместить php и Macromedia Flash. Работаю по книге Дмитрия Гурского, но может в книжке опечатки или это я такой не мовсем умный, но у меня ничего не получается. Предлагаю вашему вниманию скрипты на Flash и php.

Macromedia Flash MX Professional 2004
System.useCodepage=true;
var s_and_1_obj:LoadVars=new LoadVars(); // Отправитель
var rec_obj:LoadVars=new LoadVars(); // Получатель
send.onPress=function():Void {
s_and_1_obj.sender_name=sender_name.text;
s_and_1_obj.sender_mail=sender_mail.text;
s_and_1_obj.receiver_mail=receiver_mail.text;
s_and_1_obj.subject=subject.text;
s_and_1_obj.letter_text=letter_text.text;
s_and_1_obj.sendAndLoad("http://localhost/test", rec_obj, "POST"};
info.text="Письмо отправляется...";
};
rec_obj.onData=function(text:String):Void {
info.text="Сервер сообщает:"+text;
};

php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$receiver=$_POST['receiver_mail'];
$subject=$_POST['subject'];
$text=$_POST['letter_text'];
$from='From:'.$_POST['sender_name'].'<'.$_POST['sender_mail'].'>';
$success=mail($receiver, $subject, $text, $from);
if($success) {
echo 'Письмо успешно отправлено';
} else {
echo 'Письмо отправить не удалось. Проверьте, все ли поля заполнены.';
}
?>
</body>
</html>


Всем заранее большое спасибо.

Hauts
10.03.2011, 22:41
Что именно не работает?

Попробуйте вместо http://localhost/test поставить точный путь до скрипта, например http://localhost/test/script.php.

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

Oleg_Rus
10.03.2011, 23:03
А это может произойти из-зи того, что у меня Macromedia Flash, а не как у всех от компании Adobe?

Hauts, нет, ничего не работает. Ткнул, как вы и сказали в файл и ничего...

Hauts
11.03.2011, 09:28
Флэш, по-хорошему, лучше поновее поставить, конечно.

Давайте так:

1. Создаете папку, в ней текстовый файл script.php, и в нем пишите:

response=hello from flash!


Сохраняете в utf-8 обязательно.

2. Создаете новый флэш-файл в той же папке. И в первом кадре основной временной шкалы пишите код:

var lv:LoadVars = new LoadVars();
lv.onLoad = function() {
trace(this.response);
};
lv.sendAndLoad("script.php",lv);


3. Жмете Ctrl + Enter и должны увидеть окно с "hello from flash!"

Если это работает, потом делаете следующее: переносите файл script.php туда же, откуда вы до этого пытались грузить (на localhost/test) и во флэше прописывайте новый его адрес. Запускаете.

Если не сработает — значит у вас ошибка с путями или денвер не запущен. Если сработает, то можно продолжить дальше и в пхп принимать переменные и отдавать необходимый ответ, почти так же, как вы пытались делать, только убрав html-тэги:


<?php
$receiver=$_POST['receiver_mail'];
$subject=$_POST['subject'];
$text=$_POST['letter_text'];
$from='From:'.$_POST['sender_name'].'<'.$_POST['sender_mail'].'>';
$success=mail($receiver, $subject, $text, $from);
if($success) {
echo 'result=Письмо успешно отправлено';
} else {
echo 'result=Письмо отправить не удалось. Проверьте, все ли поля заполнены.';
}
?>


А во флэше, соответственно, меняем код:

var lv:LoadVars = new LoadVars();
lv.sender_name = sender_name.text;
lv.sender_mail = sender_mail.text;
lv.receiver_mail = receiver_mail.text;
lv.subject = subject.text;
lv.letter_text = letter_text.text;
lv.onLoad = function() {
trace(this.result);
};
lv.sendAndLoad("http://localhost/test/script.php",lv);


Только учтите, что с денвера письма не будут отправлены, там заглушка стоит, насколько мне известно.
Ну и System.useCodepage=true; никогда не используйте. Если так же и в книге написано, то выкиньте ее. :)

Oleg_Rus
11.03.2011, 16:19
Hauts, первый тест, который вы мне предоставили, ничего не выдает. Окошко Output как было пустым, таким и осталось... :( А вы сможете оказать мне помощь по аське? Просто я только начинаю изучать флэш и хотелось бы, чтобы был кто-то к кому можно было обратиться за помощью.