flash MX ile son derece kullanışlı bir
mail formu yapmak bir miktar action
script bir miktar da
PHP bilgisi ile çok zor olmayan bir uygulama. Bunun için boş bir
flash çalışması açarak (Kısayol: CTRL +N) işe koyuluyoruz.
mail formu dilediğimiz bir
frame'de kullanmak için movie clip tarzında hazırlamamız yerinde olacaktır. Bu sayede main timeline'dan bağımsız çalışabilen bir
mail form oluşturcağız. Kısacası yeni oluşturduğumuz
flash çalışmasında ilk işlemimiz Insert --> New Symbol (Kısayol: CTRL + F8) ile bir movie clip oluşturmak olmalı.
Bu movie clip içersinde ilk layer'ımıza rectangle tool ile (Kısayol: R) bir background çizebiliriz. Bir üst layer'a yine aynı aracı kullanarak bir üst çizgi eklememiz görsellik açısından hoş olacaktır. Bir başka layer'a da static text aracını kullanarak (Kısayol: T) İsim, E-Posta ve Mesajınız sabit yazılarını yazalım. Hatta bu üç durağan yazıyı yeni bir movie clip haline getirip instance name'ini mailintro koyabiliriz. Her farklı
frame'de farklı durağan yazıyı parlak hale getirip bunları birazdan tanımlayacağımız input text field'ler ile kontrol etmek için böyle bir çalışma yaptık. Şimdi ilk oluşturduğumuz movie clip'e dönerek yeni bir layer'da yine text aracı ile bu sefer properties penceresinden (Kısayol: CTRL +F3) input text seçili olmak koşuluyla üç tane text field oluşturalım ve bunların instance name'lerini sırasıyla name ,
mail ve bod verelim. Elbette maili gönderebilmek veya formu temizleyebilmek için bir Gönder bir de Temizle butonuna ihtiyacımız olacak. (Lütfen butonların instance name'lerini sırasıyla sendbutton ve clearbutton olarak verelim.) Formun eksik ya da yanlış doldurulmasına karşın bir tane de Geri Dön butonunun olması hiç de fena olmaz.
Bu kadar laf salatasından sonra gelelim sadet olan Action
script kısmına. Her
frame'de bir başka kod yazana kadar ben fonsiyonlar ve dizelerle çalışan bir kodlamayı uygun buldum. Bu kodların hepsini movie clip'imizin içinde birinci
frame'e yerleştirmemiz yeterli olacaktır.
Kod:
stop(); //başlangıç anında filmi durdurduk.
Name.text = "Misafir" ;//Açılışta yazacak olan name yazısı.
mail.text = "account@mailserver.com" ;//Açılışta yazacak olan mail yazısı.
Bod.text = "Bu Alana Mesajınızı Yazınız..." ;//Açılışta yazacak olan bod yazısı.
name.tabIndex = 1;
mail.tabIndex = 2;
bod.tabIndex = 3;
cleanbutton.tabEnabled = false;
sendbutton.tabEnabled = false; //buraya kadar tab tuşunun kullanımı ayrıntısını gerçekleştirdik.
errors = new Array(); //hataların bir dize olarak tanımlanmasını sağlayacağız.
function ClearMailForm() {
Name.text = "";
mail.text = "";
Bod.text = "";
errorLog.text = "";
errors.length = 0; //formu temizleyecek olan fonksiyonu tanımladık.
}
function ValidateMailForm() {
errorLog.text = "";
errors.length = 0;
ValidateName();
ValidateEmail();
ValidateBody();
if (errors.length > 0) {
gotoAndStop (5);
errorLog.htmlText = "<font color='#000000'><b>Lütfen Bilgileri Düzeltiniz:</b></font><br><br>";
var j = -1;
while (++j < errors.length) {
errorLog.htmlText += errors[j] + newline; //formun doğruluğunu kontrol eden fonksiyonumuzu tanımladık. Hata mevcutsa beşinci frame'e gidip yazdırmasını istedik.
}
}
else {
Translation ();
gotoAndStop (10);
loadVariablesNum("mail.PHP", 0, "POST"); //formda hata yoksa ara işlemi yapacak olan fonksiyonun çalışmasını isteyerek değişkenlerin gideceği PHP dosyasını ve filmin 10. frame'e gitmesi gerektiğini gösterdik.
}
}
function ValidateName() {
if (Name.text == "Misafir") {
errors.push("<font color='#FF0000'>Lütfen Gerçek İsminizi Giriniz!</font>");//İsim alanında Misafir yazıyorsa verilecek hatayı belirttik.
}
if (Name.text.length < 2 || isNaN(Name.text) == false) {
errors.push("Lütfen İsminizi Giriniz!");//İsim alanına girilen karekter sayısı ikiden azsa verilecek hatayı belirttik.
}
}
function ValidateEmail() {
if (mail.text.indexOf("@") < 2) {
errors.push("<b>@</b> simgesi olmayan bir mail adresi girdiniz!");//mail alanında girilmesi gereken @ karekterinin kontrolünü ve verilecek hatayı belirttik.
}
if (mail.text.lastIndexOf(".") <= (mail.text.indexOf("@") + 2)) {
errors.push("<b>.</b> simgesi olmayan bir E-mail adresi girdiniz!");//mail alanında girilmesi gereken . karekterinin @ karekterine göre yerini kontrol ederek verilecek hatayı belirttik.
}
if (mail.text.length < 8) {
errors.push("mail Adresi Yeterince Uzun Değil!");//mail alanına sekiz karekterden daha kısa bir mail adresi yazıldığı vakit veerilecek hatayı belirttik.
}
if (mail.text == "account@mailserver.com") {
errors.push("<font color='#FF0000'>Lütfen E-mail Adresinizi Giriniz!</font>");//mail alanında account@mailserver.com yazıyorsa verilecek hatayı belirttik.
}
}
function ValidateBody() {
if (Bod.text == "Bu Alana Mesajınızı Yazınız...") {
errors.push("<font color='#FF0000'>Lütfen Mesajınızı Yazınız!</font>"); //Bod alanına girilen yazıyı kontrol ettik ve verilecek hatayı belirttik.
}
if (Bod.text.length < 2 || isNaN(Bod.text) == false) {
errors.push("Mesajınız Yeterince Uzun Değil!"); //Bod alanına girilen yazının karekter değerini kontrol ettik ve verilecek hatayı belirttik.
}
}
function Translation() {
NameFrom = Name.text; //NameFrom adlı değişkeni Name instance name'ine sahip text field ile ilişkilendirdik.
MailFrom = mail.text;//MailFrom adlı değişkeni mail instance name'ine sahip text field ile ilişkilendirdik.
Body = Bod.text;//Body adlı değişkeni Bod instance name'ine sahip text field ile ilişkilendirdik.
}
Name.onSetFocus = function () {
mailintro.gotoAndStop("isimlik");
if (Name.text == "Misafir") {
Name.text = ""; //Name adlı text field seçildiğinde ona bağlı static text'in parlak olmasını ve misafir yazısının silinmesini sağladık.
}
}
mail.onSetFocus = function () {
mailintro.gotoAndStop("postalik");
if (mail.text == "account@mailserver.com") {
mail.text = ""; //mail adlı text field seçildiğinde ona bağlı static text'in parlak olmasını ve account@mailserver.com yazısının silinmesini sağladık.
}
}
Bod.onSetFocus = function () {
mailintro.gotoAndStop("mesajlik");
if (Bod.text == "Bu Alana Mesajınızı Yazınız...") {
Bod.text = ""; //Bod adlı text field seçildiğinde ona bağlı static text'in parlak olmasını ve Bu Alana Mesajınızı Yazınız... yazısının silinmesini sağladık.
}
}
Bu action
script olayını da hallettikten sonra Temizle butonuna;
Kod:
on (release) {
mailintro.gotoAndStop(1);
ClearMailForm();
}
Gönder butonuna;
Kod:
on (release) {
mailintro.gotoAndStop(1);
ValidateMailForm();
}
ve Geri Dön butonuna;
Kod:
on (release) {
gotoAndStop(1);
}
action
script kodlarını eklemeliyiz. Yine movie clip içersinde 5.
frame'e errorLog, 10.
frame'e ise Thanks instance name'ine sahip birer dynamic text tanımlayıp properties panelinden "render text as
HTML" kutucuğunu seçili hale getirmemiz gerekmektedir. Aynı zamanda 10.
frame'in action
script penceresine;
Kod:
Thanks.htmlText = "Sayın " +NameFrom+ " Mesajınız Alınmıştır. Görüşleriniz Bizim İçin Önemlidir, Teşekkür Ederiz." ;
yazarsak maili gönderen kişiye ufak bir jest yapmış oluruz.
Oldukça iyi tasarlanmış, göze hitap eden ve kodlaması sağlam bir
mail form uygulamasını da böylece anlatmış olduk.
mail.
PHP dosyasının içeriğini aşağıda bulacaksınız. Yine yapılması gereken tek şey File --> Save (Kısayol: CTRL + S) ile çalışmamızı kaydetmek. Hoş
burada kaydedilmişi var.
mail.
PHP dosyası içeriği:
Kod:
<?PHP
//Değişkenlerin Alınması ve İşlenmesi
$eski = array("ı", "ç", "ğ","ü","ş","ö","İ","Ğ","Ü","Ş","Ö","Ç"," ","\r");
$yeni = array("ı", "ç", "ğ","ü","ş","ö","İ","Ğ","Ü","Ş","Ö","Ç"," ","<br>");
$NameFrom= str_replace($eski, $yeni, $NameFrom);
$MailFrom= str_replace($eski, $yeni, $MailFrom);
$Body= str_replace($eski, $yeni, $Body);
//Türkçe karekter sorununu da bu işlemci ile çözümlüyoruz.
$MailTo = "flasher@tuzuner.gen.tr";
$site = "tuzuner.gen.tr'den E-Posta Gönderildi.";
$DateandTime = date("d-m-Y H:i:s");
if ($REMOTE_ADDR == "") $ip = "no ip";
else $ip = getHostByAddr($REMOTE_ADDR);
$MailBody = "
[------------------------------------------------------------------]
Isım : $NameFrom
E-Posta : $MailFrom
Mesaj : $Body
[------------------------------------------------------------------]
Sistem : $HTTP_USER_AGENT
Hostname : $ip
IP adresi : $REMOTE_ADDR
Tarih : $DateandTime
[------------------------------------------------------------------]
";
//Mailin gönderilmesi
mail($MailTo, $site, $MailBody, "From: $NameFrom <$MailFrom>");
?>
["Walla bravo!
PHP Konusunda da ahkam kesti..." denilmesin, coder arkadaşların affına sığınıyorum. Konu icabıyla mecbur kaldım; yoksa ben bilmediğim konularda yorumda bulunmayı sevmem.]