Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   flash+php (http://www.flasher.ru/forum/showthread.php?t=152043)

Oleg_Rus 10.03.2011 18:10

flash+php
 
Здравствуйте!

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

Macromedia Flash MX Professional 2004
Код AS1/AS2:

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
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. Создаете новый флэш-файл в той же папке. И в первом кадре основной временной шкалы пишите код:
Код AS1/AS2:

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=Письмо отправить не удалось. Проверьте, все ли поля заполнены.';
    }
  ?>

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

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 как было пустым, таким и осталось... :( А вы сможете оказать мне помощь по аське? Просто я только начинаю изучать флэш и хотелось бы, чтобы был кто-то к кому можно было обратиться за помощью.


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

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