+ Yanıtla
Sayfa Düzeni: 1 / 2
1 2 SonSon
Toplam 19 sonuçtan 1 ile 10 arası olanlar

Konu Başlığı: Ders III: Flash MX & PHP Mail Form

  1. #1

    Arrow Ders III: Flash MX & PHP Mail Form

    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.]
    Ekli Dosyalar (Kullanmadan önce virüs taramasından geçiriniz)
    Mesaj flasher tarafından 17.11.2005 (22:49) yeniden düzenlendi.
    Çocukken her sabah Tanrı'ya yeni bir bisiklet alması için dua ederdim.Ama sonunda insan Tanrı ilişkisinin böyle olmadığını anladım ve kendime yeni bir bisiklet çaldıktan sonra her sabah günahlarımın affedilmesi için O'na dua ettim. "Al Capone"
    flasher & eiNsteiN

  2. #2

    Re: Ders III: Flash MX & PHP Mail Form

    Hocam ellerine sağlık mükemmel gidiyorsun.

    Ders 4 -5 vs... serisi devam edecek değil mi???
    Tasarlamakla başladı herşey.
    Sevgiyi, dünyayı, savaşları...
    http://www.ephe.net

  3. #3

    Re: Ders III: Flash MX & PHP Mail Form

    Çok kullanışlı ve güzel bi çalışma hazırlamışsın ellerine sağlık.Fakat çalışmanın preview'inde ad soyad veya mesaj alanına tıkladığında,solunda beyaz fontlarda ad soyad e mail yazısı geliyor.Bunun nedenini bulamadım açıklarsan sevinirim.Bu arada bu çalışmanın telefon ve şehir sorgularının olduğu versiyonu lazım bunu nasıl hazırlayacağımı açıklayabilirmisin acaba? yada yapılmışı varsa elinde gönderirsen çok sevinirim.Şimdiden teşekkür ederim...

  4. #4

    Question Ders III: Flash MX & PHP Mail Form

    Kod:
    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.
    	}
    
    Belki de bozulmuştur dosya diye düşündüm; çalışmayı ben flash MX ile hazırlamıştım ve outline tarzı bir seçili bölgenin belirtilmesi işlemi görüyordu bahsettiğimiz değişimler.

    Bu arada bu çalışmanın telefon ve şehir sorgularının olduğu versiyonu lazım bunu nasıl hazırlayacağımı açıklayabilirmisin acaba?
    Nasıl bir sorgudan bahsettiğini anlayamadım açıkçası?
    Mesaj flasher tarafından 18.11.2005 (11:34) yeniden düzenlendi.
    Çocukken her sabah Tanrı'ya yeni bir bisiklet alması için dua ederdim.Ama sonunda insan Tanrı ilişkisinin böyle olmadığını anladım ve kendime yeni bir bisiklet çaldıktan sonra her sabah günahlarımın affedilmesi için O'na dua ettim. "Al Capone"
    flasher & eiNsteiN

  5. #5

    Re: Ders III: Flash MX & PHP Mail Form

    Yani ziyaretçiden istenen bilgiler;
    İsim soyisim
    Şehir
    Telefon No:
    mail:
    Mesajınız:


    tarzı bir uygulama nasıl yapabilirm.Yukarıda isim mail ve mesaj bilgileri istemiştik ziyaretçiden...Teşekkürler..

  6. #6

    Re: Ders III: Flash MX & PHP Mail Form

    Flasher güzel yazı olmuş , tebrik ederim.Yalnız PHP kodu register_globals'ın "off" olduğu sunucularda sorun çıkartır.REMOTE_ADDR , HTTP_USER_AGENT gibi bilgiler $_SERVER[] dizisi içinde tanımlanmalı.Aynı şekilde $mailFrom gibi değişkenlerde hangi method ile yollanıyorsa o global dizinin içine alınmalı.(flash kodlardan bunu çıkartamadım.)

  7. #7

    Arrow Ders III: Flash MX & PHP Mail Form

    İsim soyisim
    Şehir:
    Telefon No:
    mail:
    Mesajınız:

    gibi bir mail form için yapmanız gereken ufak eklentiler mevcut. Örneğin Location ve Phone gibi birer text field (variable) atayıp bunu opsiyonlu doldurabilir alanlarda olduğu gibi direkt (herhangi bir mantıksal sorgulamaya girmeden) PHP dosyasına gönderebilirsiniz. PHP dosyası içeriği;

    <?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);
    $Location= str_replace($eski, $yeni, $Location);
    $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
    Şehir : $Location
    Telefon : $Phone
    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>");
    ?>

    şeklinde değişiklik gösterecektir.

    Telefonu isteyeceğimiz değişkenimiz yalnızca sayılardan olacağı için hiçbir vakit Türkçe karakter sıkıntısı yaşamayacak. O nedenledir ki str_replace fonksiyonunu onun üzerine uygulamadık.

    Şayet Location ve Phone değişkenleri için de mantıksal sorgu yapılmak istenirse ValidateLocation, ValidatePhone gibi iki fonksiyon daha tanımlanıp bunların ValidateMailForm içinde çalıştırılmaları gerekmektedir. Lüzumlu görünürse bu fonksiyonları da yazabilirim.
    Çocukken her sabah Tanrı'ya yeni bir bisiklet alması için dua ederdim.Ama sonunda insan Tanrı ilişkisinin böyle olmadığını anladım ve kendime yeni bir bisiklet çaldıktan sonra her sabah günahlarımın affedilmesi için O'na dua ettim. "Al Capone"
    flasher & eiNsteiN

  8. #8

    Re: Ders III: Flash MX & PHP Mail Form

    Verdiğin bilgiler için çok teşekkür ederim.Çok yararlı oldu.İyi çalışmalar...

  9. #9

    Re: Ders III: Flash MX & PHP Mail Form

    Merhaba,
    Türkçe karakter atamalarında bir problem var; "Ş" ve "Ğ" harfleri düzgün çıkmıyor
    ozguraltay.com //Açıldı, beklerim...
    labs.ozguraltay.com //outside of the box
    GreenAerosol.deviantart.com //Online galerim

  10. #10

    Lightbulb Flash MX & PHP Mail Form

    Kod:
    $eski = array("ı", "ç", "ğ","ü","ş","ö","İ","Ğ","Ü","Ş","Ö","Ç"," ","\r");
    $yeni = array("ı", "ç", "ğ","ü","ş","ö","İ","Ğ","Ü","Ş","Ö","Ç"," ","<br>");
    
    kodun işlevini yerine getirdiğini çok defa gözlemlemiştim.


    Siz flash player 8 ile mi denediniz?
    Çocukken her sabah Tanrı'ya yeni bir bisiklet alması için dua ederdim.Ama sonunda insan Tanrı ilişkisinin böyle olmadığını anladım ve kendime yeni bir bisiklet çaldıktan sonra her sabah günahlarımın affedilmesi için O'na dua ettim. "Al Capone"
    flasher & eiNsteiN

+ Yanıtla
Sayfa Düzeni: 1 / 2
1 2 SonSon

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz