Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-03-2004, 16:02   #1 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
loadVars() Send mit Kontaktformular

Hi,

ich habe ein Kontaktformular mit den Variablen

var_name
var_email
var_phone
var_subject
var_message

.

Diese habe ich vorher mit loadVariablesNum(); an eine PHP Datei geschickt. Das möchte ich aber nun mit einem loadVars.send machen, damit ich die onLoad Methode habe, um dann erst eine Anzeige auf Valid springen zu lassen, wenn auch alle Vars gesendet sind.

Hier das Script

ActionScript:
  1. on(release)
  2.     {
  3.     if (var_name !=='' && var_email !=='' && var_phone!=='' && var_subject !=='' && var_message !=='')
  4.         {
  5.         if (!emailAdressError(var_email))
  6.             {
  7.             //target=_global.selected_target_mail;
  8.             this.target='yves@test.de';
  9.             var sender=new LoadVars()
  10.             sender.object=this;
  11.             sender.load('mail.php', 'POST');
  12.             sender.onLoad=function(success)
  13.                 {
  14.                 if(success)
  15.                     {   
  16.                     _root.elements.content.mail.mailform_display.gotoAndPlay('valid')
  17.                     delete this.object['sender'];
  18.                     }
  19.                 };
  20.             }
  21.         else
  22.             {         
  23.             this.mailform_display.gotoAndPlay('invalid');
  24.             }
  25.         }
  26.     else
  27.         {         
  28.         this.mailform_display.gotoAndPlay('invalid');
  29.         }
  30.     }

Irgendwie muss ich aber meine Vars in das LoadVars Objekt bringen, oder?

Weil IMHO sind die so wie jetzt ist dort unbekannt.

So wie es da jedenfalls steht, geht es nicht.

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 28-03-2004, 11:21   #2 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hi,


ist ganz einfach:

sender.var_name = var_name;

etc.


Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 28-03-2004, 13:12   #3 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi,

ja das dachte ich auch. Aber geht nicht.

*3min später*

Und jetzt gerade beim Schreiben einer ellenlangen Fehlervermutung habe ich entdeckt, das in dem Script anstatt send nämlich load steht. *arghs*

Ich hatte die Vars schon vorher so dort eingefügt, dachte das sei doch auch logisch so. Und um neutral nochmal nachzufragen hatte ich das dann entfernt.


Also lag der Fehler am load hast hätte SEND sein müssen.

hehe.

Danke und liebe Grüße

Yves
  Mit Zitat antworten
Alt 28-03-2004, 13:16   #4 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Aber da ist dann noch ne Frage

Wenn ich die Varibalen an die PHP Datei übertragen werden öffnet sich dieselbige Datei in einem neuen Fenster. Warum? Und wie schalte ich das ab?

Außerdem wird die onLoad Aktion nicht ausgeführt


Yves

ActionScript:
  1. on(release)
  2.     {
  3.     if ((var_name !=='' && var_email !=='' && var_phone!=='' && var_subject !=='' && var_message !=='') && !emailAdressError(var_email))
  4.         {
  5.         //var recipient=_global.selected_target_mail;         
  6.         var sender=new LoadVars()
  7.         sender.object=this;
  8.         sender.recipient='yves@das-studio.com';
  9.         sender.var_name=var_name;
  10.         sender.var_email=var_email;
  11.         sender.var_phone=var_phone;
  12.         sender.var_subject=var_subject;
  13.         sender.var_message=var_message;   
  14.         sender.send('mail.php', 'POST');           
  15.         sender.onLoad=function(success)
  16.             {
  17.             if(success)
  18.                 {   
  19.                 _root.elements.content.mail.mailform_display.gotoAndPlay('valid')
  20.                 delete this.object['sender'];
  21.                 }
  22.             };
  23.         }
  24.     else
  25.         {         
  26.         this.mailform_display.gotoAndPlay('invalid');
  27.         }
  28.     }
  Mit Zitat antworten
Alt 28-03-2004, 13:35   #5 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Du lädst doch auch nix. Wie soll dann onLoad getriggert werden?
send alleine öffnet ein Browserfenster, wenn ein Ziel übergeben wird.
Lass in deinem Fall einfach "post" weg (wird eh per default verwendet) oder nimm sendAndLoad, wenn du ein Feedback per onLoad haben willst.


Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 28-03-2004, 14:12   #6 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Stimmt

Ich dachte onLoad wäre eine Methode um auch zu bemerken, wenn alle Variablen abgeschickt wurden. Ist aber unlogisch wie ich gerade selbst feststelle.

Ich habe es jetzt mit sendAndLoad(); gemacht, welches aus der PHP ein einfaches 'success' bekommt. Praktisch, da in PHP der Mail(); Befehl boolean ist.
So kann man dann eventuell nochmal auf „Abschicken“ klicken wenn keine Erfolgsbestätigung kommt und sicher gehen das alles abgeschickt wurde.

ActionScript:
  1. on(release)
  2.     {
  3.     if ((var_name !=='' && var_email !=='' && var_phone!=='' && var_subject !=='' && var_message !=='') && !emailAdressError(var_email))
  4.         {
  5.         //var recipient=_global.selected_target_mail;         
  6.         var sender=new LoadVars()
  7.         sender.object=this;
  8.         sender.recipient='yves@das-studio.com';
  9.         sender.var_name=var_name;
  10.         sender.var_email=var_email;
  11.         sender.var_phone=var_phone;
  12.         sender.var_subject=var_subject;
  13.         sender.var_message=var_message;   
  14.         sender.sendAndLoad('mail.php', sender, 'POST');  
  15.         sender.onLoad=function(success)
  16.             {
  17.             if(success)
  18.                 {
  19.                 _root.elements.content.mail.mailform_display.gotoAndPlay('valid');
  20.                 delete this.object['sender'];
  21.                 }
  22.             };
  23.         }
  24.     else
  25.         {         
  26.         this.mailform_display.gotoAndPlay('invalid');
  27.         }
  28.     }

Danke für die Geduld und liebe Grüße

Yves

Geändert von 409coffeemaker (28-03-2004 um 14:14 Uhr)
  Mit Zitat antworten
Alt 28-03-2004, 14:16   #7 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
success gibt aber nur an, ob die Datei geladen wurde. Was darin passiert, musst du dem LoadVars selbst zurückliefern.


Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 28-03-2004, 14:24   #8 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Ich glaube wir Missverstehen uns… Funktion und echo(); aus der PHP Datei heissen gleich, haben aber nix miteinander zu tun.

Wenn die PHP Datei nichts zurückgibt, also nirgends ein echo(); enthalten ist, wird auch nicht die onLoad() Aktion ausgeführt, da ja nichts zum laden ist.

Daher habe ich dann

PHP-Code:
if(mail(utf8_decode($_POST['recipient']),utf8_decode($_POST['var_subject']),$msg,'FROM:'.utf8_decode($_POST['var_email'])))
    {
    echo
'success';
    } 
Also nur wenn die Email abgeschickt wurde gibt es etwas zu laden und dann ist die function(success) auch true und die onLoad Aktion läuft ab.

Soweit korrekt, oder?


Liebe Grüße

Yves
  Mit Zitat antworten
Alt 28-03-2004, 14:48   #9 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
wenn du meinst, dass eine leere Rückgabe im onLoad false ergibt, ist das richtig.
Aber wenn du in PHP "success" ausgibst, dann hat das nix mit dem success in Flash zu tun. So hatte ich dich zumindest verstanden. Du kannst auch "asldkasödklsödlgdlJ" aus PHP zurückgeben, success in onLoad ist trotzdem true


Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 28-03-2004, 14:54   #10 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
wenn du meinst, dass eine leere Rückgabe im onLoad false ergibt, ist das richtig.
Mein ich.
Zitat:
Aber wenn du in PHP "success" ausgibst, dann hat das nix mit dem success in Flash zu tun.
Success in Flash ist auch nur der Name der Funktion, die selbst true oder false zurückgibt und hat nix mit dem success in PHP zu tun.
Zitat:
So hatte ich dich zumindest verstanden.
Manchmal drück ich mich kompliziert aus
Zitat:
Du kannst auch "asldkasödklsödlgdlJ" aus PHP zurückgeben, success in onLoad ist trotzdem true
Jo klar. "asldkasödklsödlgdlJ" wäre dann das was geladen wir und die Funktion success() gibt daraufhin true zurück.
Wird anstatt "asldkasödklsödlgdlJ" nichts ausgegeben liefert die Funktion success() ein false.


Yves

Geändert von 409coffeemaker (28-03-2004 um 14:56 Uhr)
  Mit Zitat antworten
Alt 28-03-2004, 15:02   #11 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
ok, dann haben wir uns richtig verstanden.
Allerdings nur der Vollständigkeit halber:
success ist nicht die Funktion sondern der Parameter der Funktion...


Ich würde mich indes nicht allein auf eine beliebige Rückgabe verlassen. Ein einfacher Umbruch wurde schon true auslösen.
Stattdessen ist es sinnvoller, konkret den Status des PHP zu übergeben, z.b. mit &phpsuccess=1& (liegt dann im onLoad als this.phpsuccess vor)

Das ist auf jedenfall sicherer und vorzuziehen.


Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 28-03-2004, 15:21   #12 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Jo, Parameter. Geb ich dir vollkommen recht

Ich muss mich noch was üben in Terminologie.


Ich werde das mal so machen wie du vorgeschlagen hast, aber trotzdem verrat mir mal, woher irgendein Umbruch oder so in diesem Script kommen sollte

PHP-Code:
<?php
$timestamp
=date('l, dS of F Y / h:i:s A');
$ip=getHostByAddr($_SERVER['REMOTE_ADDR']);
$msg='
Name: '
.utf8_decode($_POST['var_name']).'
Phone: '
.utf8_decode($_POST['var_phone']).'
eMail: '
.utf8_decode($_POST['var_email']).'
Subject: '
.utf8_decode($_POST['var_subject']).'
Message:
'
.utf8_decode($_POST['var_message']).'







Browsertype: '
.$_SERVER['HTTP_USER_AGENT'].'
Provider: '
.$ip.'
Client IP Adress: '
.$_SERVER['REMOTE_ADDR'].'
Date/Time:  '
.$timestamp.'
'
;
if(
mail(utf8_decode($_POST['recipient']),utf8_decode($_POST['var_subject']),$msg,'FROM:'.utf8_decode($_POST['var_email'])))
    {
    echo
'success';
    }
?>

Gruß

Yves
  Mit Zitat antworten
Alt 28-03-2004, 15:27   #13 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
muss ja gar nicht gewollt sein, kann einfach so mal passieren.
Mancher Webserver generiert evtl. irgendeinen Quatsch drumrum.
Oder ein anderer editiert dein Skript und hat keine Ahnung, dass eine wesentliche Rückgabe darin besteht, dass überhaupt irgendetwas zurückgegeben wird.
Das sind einfach mögliche Fehlerquellen, die man ganz simpel ausschließen kann.
Der Server könnte auch down sein und du bekommst nur einen 404 oder anderen Serverfehler und schon hast du einen Content...


Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 28-03-2004, 15:36   #14 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Ok,

so nun auf die Nummer sicher:

ActionScript:
  1. on(release)
  2.     {
  3.     if ((var_name !=='' && var_email !=='' && var_phone!=='' && var_subject !=='' && var_message !=='') && !emailAdressError(var_email))
  4.         {
  5.         //var recipient=_global.selected_target_mail;         
  6.         var sender=new LoadVars()
  7.         sender.object=this;
  8.         sender.recipient='yves@das-studio.com';
  9.         sender.var_name=var_name;
  10.         sender.var_email=var_email;
  11.         sender.var_phone=var_phone;
  12.         sender.var_subject=var_subject;
  13.         sender.var_message=var_message;   
  14.         sender.sendAndLoad('mail.php', sender, 'POST');  
  15.         sender.onLoad=function(success)
  16.             {
  17.             if(success)
  18.                 {
  19.                 if(this.status=='sent')
  20.                     {
  21.                     _root.elements.content.mail.mailform_display.gotoAndPlay('valid');
  22.                     delete this.object['sender'];
  23.                     }
  24.                 }
  25.             };
  26.         }
  27.     else
  28.         {         
  29.         this.mailform_display.gotoAndPlay('invalid');
  30.         }
  31.     }


PHP-Code:
<?php
$timestamp
=date('l, dS of F Y / h:i:s A');
$ip=getHostByAddr($_SERVER['REMOTE_ADDR']);
$msg='
Name: '
.utf8_decode($_POST['var_name']).'
Phone: '
.utf8_decode($_POST['var_phone']).'
eMail: '
.utf8_decode($_POST['var_email']).'
Subject: '
.utf8_decode($_POST['var_subject']).'
Message:
'
.utf8_decode($_POST['var_message']).'







Browsertype: '
.$_SERVER['HTTP_USER_AGENT'].'
Provider: '
.$ip.'
Client IP Adress: '
.$_SERVER['REMOTE_ADDR'].'
Date/Time:  '
.$timestamp.'
'
;
if(
mail(utf8_decode($_POST['recipient']),utf8_decode($_POST['var_subject']),$msg,'FROM:'.utf8_decode($_POST['var_email'])))
    {
    echo
'&status=sent&';
    }
?>

Wo wir gerade schon dabei sind…

Man könnte ja auch noch in PHP status=failure ausgeben, wenn mail() false ist. Und dann in Flash erneut die Daten senden lassen, sowie dort einen Hinweis ausgeben, das Versuch 1 fehlgeschlagen ist und es erneut probiert wird.
Flash checkt dann einfach im LoadVars ob status==sent oder == failure. Das loadVars müsste dazu dann noch in eine extra Funktion. Dann könnte man auch der Email noch mitübergeben, bei welchem Versuch es dann geklappt hat, wenn diese Funktion dann aufgerufen wird. Quasi als Parameter mitübergeben.
Und und und und…

Nein mal im Ernst!

Für wie sicher und zuverlässig hältst du nun diese Konstruktion?

Ich hab vorher immer wie wild mit loadVaribalesNum() eine PHP mit allen Variablen des Films beschossen. Fire'n'Forget. Zugestellt wurden alle Mails immer, soweit ich weiß.

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 28-03-2004, 15:40   #15 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Geschrieben von ludabruda

Der Server könnte auch down sein und du bekommst nur einen 404 oder anderen Serverfehler und schon hast du einen Content...

Sehr gutes Argument! 100% überzeugt.

Es müsste dafür schon ein großer Zufall sein, das entweder die beiden Dateien nicht auf einem Server liegen, oder das sendmail nicht registriert ist. Aber immerhin möglich.

Danke für das tolle Mitdenken.

Yves
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele