Uitgebreid email formulier met flash.
In deze tutorial maak je stap voor stap een uitgebreid E-mail formulier in flash.
Het E-mail formulier controleert zelf of er fouten zijn ingevoerd zoals geen naam, een fout mail adres en of er een bericht is ingevoerd.
Daarnaast zit er ook een anti spam functie op, zodat de bezoeker maar eens in de 2 minuten een mail kan verzenden.
Verder kan je het formulier helemaal maken zoals je wilt en de actionScripts zijn kant en klaar voor je geschreven :-)
Het enig wat je voor deze tutorial moet doen is alle namen die ik geef
letterlijk overnemen, dus inclusief hoofdletters en streepjes etc.
Daarnaast moet je natuurlijk een webhost hebben die php ondersteund.
De tutorial is mischien wat lang, maar dat is omdat ik ongeveer alles tot in de details heb beschreven zodat een absolute beginner er toch ook iets mee kan doen.
Uiteindelijk komt het erop neer dat we
maar 2 movieclips maken, 2 buttons en verder een beetje code copieren en plakken.
Dit gaan we ongeveer maken
Als je het formulier uitgebreid hebt getest, zie je dat het formulier controleerd op de lengte van de naam en bericht, en of er een echt email adres is ingevuld.
Als je een fout maakte werd dat ook netjes getoond in een tekstvakje.
Als je een email hebt verzonden wordt er ook een antispam functie in werking gezet.
Die antispam message, zie je alleen als je een mail verzonden hebt, en daarna de pagina refreshed
(binnen de 2 minuten) .
Bovenstaande voorbeeld is aangepast zodat het lijkt of er een mailtje is verstuurd, maar verstuurt niet echt een mail.
Het formulierNeem de texttool en maak 3 texvelden voor de naam, email en bericht.
Stel alle 3 de texvelden in op
input, en het vak waar het bericht in moet komen op multiline.
Geef de tekstvakken de
instancenamennaamemailberichtZet in deze tekstvakken ook letterlijk deze tekst:
Naam
E-mail
Bericht
inclusief de hoofdletters etc.
Maak nu nog een tekstvak aan waar onze foutmeldingen in komen te staan.
Maak dit een
dynamic tekstvak en geef het de instancenaam
fouten.
We moeten dan nog een
zend mail knop hebben en een
wis alles knop, dus maak 2 buttons en plaats die bij je tekstvelden, geef ze de instancenamen
wisKnop en
verzendKnop.We hebben dus nu 2 knoppen en 4 tekstvelden waarvan er 3 tekstvelden input zijn en een dynamic.
Selecteer nu
alle textvelden en knoppen nu en druk op f8, in het venstertje wat opent vink je
movie aan en geeft het een naam.
(formulier ofzo).
Klik nu op de main scene op die nieuwe movie en geef het de instancenaam
mailFormulier.
Met dat formulier nog geselecteerd, openje het actionScript paneel en plaats het onderstaande script:
actionscript codeonClipEvent (data) {
_parent.nextFrame();
}
Het formulier is nu klaar, het "mooi" maken laat ik aan jullie fantasie over.
De email is succesvol verzondenWe hebben dus nu op onze timeline één keyFrame, en op de scene het mailFormulier.
De volgende stap is het maken van een bedankje wat getoont word als het mailen is gelukt.
Dus klik op de 2e frame in de main timeline, en insert een
blank keyFrame (f6).
We hebben dus nu weer een leeg scherm, in dit scherm schrijf je een tekstje, waarin je de bezoeker zegt dat de email succesvol verzonden is.
Ook hier is de eyeCandy helemaal aan jullie fantasie :-)
FoutmeldingHet mailen lukt mischien niet altijd, dus moeten we ook een berichtje tonen dat het mailen mislukt is.
Dat gaan we maken op frame 3
Dus klik nu op het derde frame in de timeline en inserten weer een
blank keyFrame.
In het weer lege scherm plaatsen we hier een tekst waarin er gezegd word dat de email NIET is verzonden.
Met andere woorden, dit scherm hopen we nooit te zien :-)
In dit
keyFrame (het 3e in de main timeline) plaatsen we het volgende script:
actionscript code
stop();
//antispam cookie resetten want er is niet gemailed
waneer.data.tijdstip = 0;
waneer.flush();
};
Als er op de verzendknop werd geklikt en de controles resulteerde true, dan werd er een
shared object geplaatst ivm de antispam functie.
Omdat er niet gemailed werd, is het cookie overbodig en moet weggehaald worden, anders kan de klant 2 minuten niet proberen opnieuw te mailen.
Met bovenstaande actionScript legen we het cookie en kan er gelijk opnieuw worden gemailed.
controleren en verzenden (of juist niet)We hebben nu dus op de main timeline 3 keyframes, met op frame 1 het formulier, op frame 2 onze
bedankt boodschap en op frame 3 de
mislukt boodschap.
In het
tweede keyFrame plaatsen we een stop();
In het eerste keyframe komt het script wat alles controleerd en eventueel de foutmeldingen toont.
Ik heb het script voldoende commentaar gegeven, dus ik denk niet dat ik daar verder iets aan hoeft uit te leggen.
Het enige wat er nog veranderd MOET worden in het script is het email adres waar de mail naartoe moet.
Copieer het onderstaande actionScript en plak die in het eerste
keyFrame op de main scene.
Let, je moet het email adres nog aanpassen naar jouw E-mail adres, ook de "meldingen" kan je daar aanpassen.actionscript code/*
Uitgebreid flash email formulier door vinTage
http://www.vintagesworld.be
*/
/* Verander hieronder de gegevens */
naar = "jou@emailAdres.be";
naamFout = "Naam leeg/te kort";
emailFout = "Foutief E-mail";
berichtFout = "Bericht leeg/te kort";
antiSpamtijd = 2; //minuten
antispamBoodschap = "ANTISPAM<br>"+antiSpamtijd+" minuten<br>wachten tussen elke mail.";
/*Hieronder hoef/mag je niets te veranderen */
stop();
//html toestaan in het foutmeldingen schermpje
mailFormulier.fouten.html = true;
//tekstvakken leeg maken als ze geselecteerd worden
mailFormulier.email.onSetFocus = function(){
if(mailFormulier.email.text == "E-mail"){
mailFormulier.email.text = "";
}
}
mailFormulier.email.onKillFocus = function(){
if(mailFormulier.email.text == ""){
mailFormulier.email.text = "E-mail";
}
}
mailFormulier.naam.onSetFocus = function(){
if(mailFormulier.naam.text == "Naam"){
mailFormulier.naam.text = "";
}
}
mailFormulier.naam.onKillFocus = function(){
if(mailFormulier.naam.text == ""){
mailFormulier.naam.text = "Naam";
}
}
mailFormulier.bericht.onSetFocus = function(){
if(mailFormulier.bericht.text == "Bericht"){
mailFormulier.bericht.text = "";
}
}
mailFormulier.bericht.onKillFocus = function(){
if(mailFormulier.bericht.text == ""){
mailFormulier.bericht.text = "Bericht";
}
}
//formulier wissen
mailFormulier.wisKnop.onRelease = function(){
mailFormulier.naam.text = "Naam";
mailFormulier.email.text = "E-mail";
mailFormulier.bericht.text = "Bericht";
mailFormulier.fouten.text = "";
}
//ongewenste karakters excluden uit het email tekstvak.
mailFormulier.email.restrict =
"^!^"^#^$^%^&^(^)^'^?^;^+^±^=^¸°^¸^,^[^]^¦^*^€^{^}^>^<";
//anti spam variabelen opbouwen
waneer = SharedObject.getLocal("antispam", "/");
vandaag = new Date();
hoeLaat = vandaag.getTime();
//kijken of er niet te snel opnieuw gemailed word
if (waneer.data.tijdstip>hoeLaat-(antiSpamtijd*36000)) {
mailFormulier.verzendKnop.enabled = false;
mailFormulier.fouten.htmlText = antispamBoodschap;
}
/*er is op verzenden geklikt, controleren op fouten en deze tonen
als er geen fouten zijn, dan mailen*/
mailFormulier.verzendKnop.onRelease = function() {
//antispamtijd opnieuw aanmaken
vandaag = new Date();
hoeLaat = vandaag.getTime();
//onze variabelen aanmaken
naam = mailFormulier.naam.text;
Email = mailFormulier.email.text;
bericht = mailFormulier.bericht.text;
//een array aanmaken wat de fouten bijhoud en toont na het klikken op verzendKnop
errors = new Array();
if((naam.length <3) || naam == "Naam"){
//kijken of er een naam is gegeven
errors.push(naamFout);
}
if(bericht.length <10){
//bericht was korter dan 10 karakters
errors.push(berichtFout);
}
//email adres checken
lp = Email.lastIndexOf(".");
if (
//lengte van het email adres
(Email.length<6) ||
//zit er een spatie in ?
(Email.indexOf(" ")>=0) ||
//zit er een apestaartje in ?
(Email.indexOf("@")<=0) ||
//komt er een puntje NA het apestaartje ?
(Email.lastIndexOf(".")<Email.indexOf("@")) ||
//zijn er meer dan 3 letters als extentie ingevoerd ?
(Email.lastIndexOf(".")>Email.length-3) ||
//ja, de extentie was langer dan 3 letters....uitzonderingen
((Email.lastIndexOf(".")<Email.length-4) &&
Email.substr(lp+1, email.length) != "museum" &&
((Email.lastIndexOf(".")<Email.length-4)
&& Email.substr(lp+1, email.length) != "aero" &&
((Email.lastIndexOf(".")<Email.length-4) &&
Email.substr(lp+1, email.length) != "coop" &&
((Email.lastIndexOf(".")<Email.length-4) &&
Email.substr(lp+1, email.length) != "jobs" &&
((Email.lastIndexOf(".")<Email.length-4) &&
Email.substr(lp+1, email.length) != "travel" &&
((Email.lastIndexOf(".")<Email.length-4) &&
Email.substr(lp+1, email.length) != "arpa" &&
((Email.lastIndexOf(".")<Email.length-4) &&
Email.substr(lp+1, email.length) != "name" &&
((Email.lastIndexOf(".")<Email.length-4) &&
Email.substr(lp+1, email.length) != "info")) ||
//staan er twee puntjes na elkaar net voor de extentie ?
(Email.charAt(lp-1) == Email.charAt(lp)) ||
//staan er 2 puntjes in de domein naam?
(Email.indexOf("..")>Email.indexOf("@"))))))))) {
//email adres is fout
errors.push(emailFout);
}
//als er fouten waren
if(errors.length>0){
//trace(errors);
mailFormulier.fouten.htmlText = errors.join("<br>");
} else {
//als er geen fouten waren
mailFormulier.naam = naam;
mailFormulier.email = Email;
mailFormulier.bericht = bericht;
mailFormulier.jouwEmailAdres = naar;
mailFormulier.loadVariables("email.php", "POST");
//antispam cookie maken
waneer.data.tijdstip = hoeLaat;
waneer.flush();
//buttons disabelen..zodat er niet nog snel iets gedaan kan worden.
mailFormulier.verzendKnop.enabled = false;
mailFormulier.wisKnop.enabled = false;
//toon de ronddraaiende teller tijdens het wachten op de php.
bezig.play();
}
};
tijdens het verzenden.Als alle velden goed waren ingevuld word er een php bestand aangesproken.
We willen dus wel dat er een controle is ingebouwd die kijkt of het php bestand wel werd gevonden, en er dus gemailed kan worden.
Tijdens deze controle tonen we een animatie die 30 seconden (kan) duren.
Deze 30 seconden is ook de
(standaart) timeout tijd van php.
We maken dus een nieuwe
movieclip (ctrl+f8)
Nu inserten we een nieuwe blank keyFrame in de timeline
(van deze nieuwe movieclip).
Er staan nu dus twee lege keyframes in de timeline.
Plaats op het 2e keyframe een figuurtje dat we gaan laten draaien.
Neem de oval tool (o), en teken een cirkel.
Met de gum kunnen we een klein stukje weggummen uit de rand van het cirkeltje, zodat het duidelijk is dat het draait.
Klik nu op de 2e keyFrame en rechtsklik =>create motion tween.
Ik ga er even vanuit dat je fla 12 FPS is
(ook standaart), dus we plaatsen we een keyFrame op frame 13.
(zo duurt één loop precies één seconde)Er is nu een paarse balk in de timeline te zien.
Selecteer de 2e keyFrame weer in de main timeline en in het properties scherm van die frame selecteren we rotate/CW.
Als het goed is houden we dus een cirkeltje over wat ronddraait.

Er zijn dus nu 13 frames in beeld, waarvan de eerste leeg is, en de rest is onze motiontween.
Maak een nieuwe laag aan, boven het cirkeltje en zet met de texttool daar een dynamish tektvakje ter grote van 2 cijfers en centreer de tekst.
Zet het tekstvakje in het midden van het cirkeltje en geef het de
variable naam "
tijd".
Nu hebben we nog een klein beetje actionscript nodig wat ervoor zorgt dat het cirkeltje maar 30 seconden in beeld is, en daarna de bezoeker doorverwijst naar de fout pagina, want blijkbaar is de mail na 30 seconden niet verzonden.
Op een nieuwe laag, genaamd "actions" zetten we op de eerste lege keyframe het volgende script:
actionscript codestop();
tijd = 30;
Klik op die laag op frame 13 en insert een blank keyframe, in dat keyframe plaats je de volgende code:
actionscript codetijd --;
gotoAndPlay(2);
if(tijd == 0){
_parent.gotoAndStop(3);
}
Deze code zorgt ervoor dat elke keer als de pointer op frame 13 komt, dat hij terugspringt naar frame 2 en dus weer opnieuw begint te draaien.
Ondertussen word er ook elke keer 1 puntje van onze tijd afgetrokken, zodra de tijd op 0 staat zijn er dus 30 seconden voorbij en gaat de flash naar het 3e frame waar de foutmelding dus staat, dat het mailen mislukt is.
We moeten nu weer naar de main scene gaan en slepen de movieclip die we net gemaakt hebben op ons werkblad.
Daar geven we het de instance naam
bezig.
Het mailformulier hieronder werkt echt, maar de email php word niet gevonden, je zal dus echt 30 seconden moeten wachten om daarna de foutmelding te zien.
Het php bestandTot zover het flash gedeelte, nu moeten we alleen nog even een php bestandje hebben wat alles werkelijk doormailt.
Open je favoriete editor en plak onderstaande php code in een nieuw bestand.
php code<?php
if($_SERVER['REQUEST_METHOD'] ==
'POST') {
$headers =
"MIME-Version: 1.0rn";
$headers .=
"Content-type: text/html; charset=iso-8859-1rn";
$headers .=
"Return-Path: jouNaamHier <".
$_POST['jouwEmailAdres'].
">rn";
$headers .=
"Reply-To: ".
$_POST['naam'].
" <".
$_POST['email'].
">rn";
$headers .=
"From: ".
$_POST['naam'].
" <".
$_POST['email'].
">rn";
$headers .=
"To: jouNaamHier <".
$_POST['jouwEmailAdres'].
">rn";
$headers .=
"X-Mailer: PHP v".
phpversion();
mail ($_POST['jouwEmailAdres'],
"Flash E-mail",
$_POST['bericht'],
$headers);
}
else {
echo "Deze pagina is alleen nuttig met bijbehorende swf<br />
Voor meer info bezoek <a href='http://www.vintagesworld.be'>mijn flash site</a>";
}
?>
Save dit bestand als
email.php en zet het in dezelfde map als waar je swf staat.
Je moet alleen nog even in bovenstaande scriptje je naam aanpassen, anders krijg je mailtjes van mensen met de naam "jouwNaamHier".
Nu alles op een php enabled server zetten en je hebt je eigen deftig email formulier.
Mocht een en ander niet duidelijk zijn, dan heb ik hier een fla bestand ter ondersteuning voor deze
flash email applicatie.
(alleen zelf nog mooi maken ^^ )
Je bent niet ingelogged, je kan geen commentaar geven, of commentaren lezen over deze tutorial.