Avatar billede mmohr Nybegynder
16. marts 2005 - 00:25 Der er 13 kommentarer

Formmail upålidelig!

Hvorfor sender denne flash form kun mailen afsted ca. hver anden gang:

her er flashen:

function sendmail() {
// henter teksten 
    send_navn = navn.text;
    send_adresse = adresse.text;
    send_postnr = postnr.text;
    send_by = by.text;
    send_telefon = telefon.text;
    send_email = email.text;
    send_emne = emne.text;
    send_besked = besked.text;

    // Send mail
    if (send_navn != "Navn" && send_email != "Email" && send_emne != "Emne" && send_besked != "Besked") {
        loadVariables("sendmail.php", this, "POST");
        senderAnim.gotoAndPlay("sender");       
       
        //    Svar fra server
        onData = function() {
            senderAnim.gotoAndStop("sendt");
            if (this.output == 'sent') {
                senderAnim.statustxt.text = "Tak for din henvendelse. Din besked er afsendt!";
            } else {
                senderAnim.statustxt.textColor = 0xFF0000;
                senderAnim.statustxt.text = "Der er opstået en fejl! Prøv igen senere.";
            }
        };
    } else {
        // Manglende felter
        if (navn.text == "Navn") {
            navn.textColor = 0xFF0000;
        }
        if (email.text == "Email") {
            email.textColor = 0xFF0000;
        }
        if (emne.text == "Emne") {
            emne.textColor = 0xFF0000;
        }
        if (besked.text == "Besked") {
            besked.textColor = 0xFF0000;
        }
    }
}

og her PHP'en:

<?
    $to = "###@###.dk";
    $subject = $HTTP_POST_VARS['send_emne'];
    $body = stripslashes($HTTP_POST_VARS['send_besked']);
    $body .= "\n\nAdresse:\n" . $HTTP_POST_VARS['send_adresse'] . "\n";
    $body .= $HTTP_POST_VARS['send_postnr'];
    $body .= $HTTP_POST_VARS['send_by'] . "\n\n";
    $body .= "Tlf: " . $HTTP_POST_VARS['send_telefon'] . "\n";
    $body .= "Email: " . $HTTP_POST_VARS['send_email'] . "\n";
    $header = "From: " . $HTTP_POST_VARS['send_navn'] . " <" . $HTTP_POST_VARS['send_email'] . ">\n";
    $header .= "Reply-To: " . $HTTP_POST_VARS['send_navn'] . " <" . $HTTP_POST_VARS['send_email'] . ">\n";
    $header .= "X-Mailer: PHP/" . phpversion() . "\n";
    $header .= "X-Priority: 0";

    if(@mail($to, $subject, $body, $header)){
        echo "output=sent";
    } else {
        echo "output=error";
}
?>

er der nogen der kan sige det... har en web hvor funktionen ligger på en knap istedet, som virker, men har prøvet det her også og det synes ikke at hjælpe på problemet?
Avatar billede mmohr Nybegynder
16. marts 2005 - 00:27 #1
ved onData skal der selvfølgelig stå: this.onData
Avatar billede mmohr Nybegynder
16. marts 2005 - 00:28 #2
Skal lige tilføjes, at den melder tilbage til flashen med beskeden at mailen ikke er sendt, så php bliver vel udført eller hvad??
Avatar billede barklund Nybegynder
16. marts 2005 - 00:40 #3
Hm, og du bruger Flash 5 og PHP3, kan jeg se - eller?
Avatar billede mmohr Nybegynder
16. marts 2005 - 09:15 #4
hehe... nej! Det er ret gamle de her scripts.. det indrømmer jeg. Har du noget forslag til en opdatering?
Avatar billede barklund Nybegynder
16. marts 2005 - 10:58 #5
Først og fremmest bør du kigge på LoadVars-klassen i Flash - den er ret simpel og der er rigeligt eksempler på den.

Derudover bør du lave $HTTP_POST_VARS om til $_POST i dit PHP-script.

Og mht. om mailen bliver sendt eller ej, så ved php det faktisk ikke. Selvom mail() returnerer true, så betyder det ikke andet, end at mailen korrekt er lagt i kø i serveren mail-program - men om den bliver sendt eller ej bestemmer dette program sådan set. Hvis det er en ugyldig modtageradresse, så kommer mailen for eksempel aldrig afsted.
Avatar billede mmohr Nybegynder
16. marts 2005 - 11:04 #6
okay.. det vil jeg kigge på. Så  jeg skal brruge loadVars når jeg venter på svar, eller?

Tror ikke det har noget med mail programmet som php'en sender til at gøre, for mailen bliver altid sendt når min php vender tilbage med "sent" og kommer ikke afsted når php'en melder "error".
Avatar billede barklund Nybegynder
16. marts 2005 - 11:15 #7
Hvis mail() returnerer false (som er tilfældet, hvis dit script melder error), så skyldes det:

Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.

Hvilket jeg ikke lige selv har oplevet eller kan forestille mig hvad skyldes.
Avatar billede mmohr Nybegynder
16. marts 2005 - 11:20 #8
kan det have noget at gøre med at php'en allerede er udført, når jeg prøver at sende anden gang?
Avatar billede barklund Nybegynder
16. marts 2005 - 11:23 #9
Hvis du trykker to gange på knappen, så vil php'en jo bare blive kaldt og udført to gange - og dermed sende to mails. Sådan burde det netop virke.

Og ja, du skal bruge LoadVars til både at sende og hente din variabler - et objekt til begge dele.

--
Morten Barklund
Avatar billede mmohr Nybegynder
16. marts 2005 - 18:54 #10
Kan ikke få det til at funke! skal det se sådan ud:

    if (send_navn != "Navn" && send_email != "Email" && send_emne != "Emne" && send_besked != "Besked") {
        formMail.load("sendmail.php", "POST");
        senderAnim.gotoAndPlay("sender");       
       
        //    Svar fra server
        formMail.onData = function() {
            senderAnim.gotoAndStop("sendt");
            if (this.output == 'sent') {
                senderAnim.statustxt.text = "Tak for din henvendelse. Din besked er afsendt!";
            } else {
                senderAnim.statustxt.textColor = 0xFF0000;
                senderAnim.statustxt.text = "Der er opstået en fejl! Prøv igen senere.";
            }
        };
    } else
Avatar billede mmohr Nybegynder
16. marts 2005 - 18:55 #11
plus den her... var formMail = new LoadVars();
Avatar billede mmohr Nybegynder
16. marts 2005 - 18:59 #12
lige nu popper php'en op i et nut vindue?? den skal slet ikke være synlig overhovedet.
Avatar billede barklund Nybegynder
19. marts 2005 - 15:59 #13
Hvor kopierer du alle variablerne, som skal sendes, over på LoadVars objektet?

Og du skal da bruge LoadVars.sendAndLoad - du skal jo sende nogle variabler og hente svaret.

Derudover skal du bruge LoadVars.onLoad - og ikke LoadVars.onData.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester