2.152 kez okundu

Flash da php mail formu oluşturmak

10 10 2.152 kez okundu incelendi

Bu uygulamamızda ActionScript 3.0 ve php ile iletişim formu yapacağız. Bu formların amacı kullanıcı ve site sahibi arasında yazılı olarak iletişimin gerçekleşmesini sağlamaktır. Fakat bu iletişimin gerçekleşebilmesi için kullanıcıdan bir takım bilgilerin alınması gerekmektedir (Örn. : Ad, Soyad, mail adresi, mesaj vb.).

İlk olarak kullanıcıdan gerekli bilgileri alabilmek için Flash ve ActionScript 3.0 kısmını halledelim. Yeni bir doküman açalım ve dökümanı belirlediğimiz herhangi bir klasörün içerisine MailYolla ismi ile kayedelim. Sahneye 4 adet Input Text , 1 adet Dynamic Text ve 2 adet buton yerleştirelim. Butonlar için Components panelinde bulunan butonları kullanabilirsiniz. Nesnelerin Instance Name?leri ve yerleşimi için alttaki imajı inceleyebilirsiniz.
http://resim.sanalkurs.net/uploads/Form.jpg

Şimdi de yeni bir layer oluşturalım ve ismini Actions olarak değiştirelim. Actions panelini açalım ve kodları yazmaya başlayalım.

Her ihtimale karşılık metin kutularının içerisini boşaltalım ve tab tuşuna basıldığında yağılacak geçişlerin sırasını belirleyelim.

isim_txt.text="";
mail_txt.text="";
konu_txt.text="";
mesaj_txt.text="";
uyari_txt.text="";

isim_txt.tabIndex=1;
mail_txt.tabIndex=2;
konu_txt.tabIndex=3;
mesaj_txt.tabIndex=4;[/cc]

Kullandığımız butonların Label?larını değiştirelim.
[cc lang="ActionScript"]
temizle_btn.label="Temizle";
gonder_btn.label="Gönder";

Uygulama açıldığında fare imlecinin isim_txt adındaki metin kutusunda olmasını sağlayalım. Bunun için stage.focus özelliğini kullanacağız.

stage.focus=isim_txt;

Input Text alanlarına girilecek olan karakter sayılarını sınırlandıralım. Karakter sayılarını sınırlandırabilmek için maxChars özelliğini kullanacağız.

isim_txt.maxChars= 30;
mail_txt.maxChars=40;
konu_txt.maxChars=100;
mesaj_txt.maxChars=500;

Şimdi de temiz_btn isimli butona olay dinleyici ekleyelim ve butona tıklandığında bütün text alanlarının içlerinin boşaltılmasını sağlayalım.

temizle_btn.addEventListener(MouseEvent.CLICK, formuTemizle);

function formuTemizle(e:MouseEvent) {
	isim_txt.text="";
	mail_txt.text="";
	konu_txt.text="";
	mesaj_txt.text="";
	uyari_txt.text="";
	stage.focus=isim_txt;
}

Geriye gonder_btn isimli butona tıklandığında kullanıcıdan aldığımız verileri php dosyasına göndermek kaldı. Fakat butona tıklandığında ilk olarak verileri göndermeyeceğiz. Mesajın gönderilebilmesi için istenilen tüm bilgilerin eksiksiz olarak girilmesi gerekmektedir. Eğer tüm bilgiler eksiksiz olarak girildi ise mail adresinin hatalı olup olmadığını kontrol edeceğiz. Bilgiler eksiksiz ve mail adresi de doğru ise bilgileri php dosyasına göndereceğiz. Bu kontrollerin hepsini if..else if koşullu ifadesini kullarak yapacağız.

Mail adresinin hatalı olup olmadığını nasıl kontrol edeceğiz? Sorusunu duyar gibi oldum 🙂 Bu kontrolü basit bir şekilde yapabiliriz. Her mail adresinde olması gerekn bir takım karakterler mevcuttur. Bu karakterler @ ve alan adı ve uzantısını ayırmak için kullanılan . ?dır. Biz de kullanıcının girdiği mail adresinde bu karakterlerin olup olmadığını indexOf metodunu kontrol edeceğiz. Eğer aradığımız karakter yok ise geriye dönecek değer -1 olacaktır. Yani kullanıcının girdiği mail adresinde @ veya . karakteri yok ise arama sonucunda geriye -1 değeri dönecektir.

Kontroller sonucu her şey istediğimiz gibi ise verileri php dosyasına göndereceğiz. İlk olarak bir URLVariables nesnesi tanımlayacağız. PHP dosyasına göndereceğimiz verileri bu nesneye birer özellik olarak ekleyecek ve kullanıcıdan aldığımız bilgileri özelliklere değer olarak atayacağız. Sonrasında ise bir URLRequest nesnesi tanımlayarak kullanacağımız php dosyasının yolunu belirteceğiz ve bu nesnenin data özelliğine tanımlamış olduğumuz URLVariables değişkenini değer olarak atayacağız. Son olarak veriyi göndermek ve gönderme işleminin sonucunu almak için bir URLLoader nesnesi tanımlayacağız. Sonucun dönme süresini hesaplama imkanımız olmadığı için URLLoader nesnesine bir olay dinleyicisi ekleyerek işlemin bitip bitmediğini kontrol edeceğiz.

Gonder_btn isimli nesnemize olay dinleyicimizi ekleyelim ve gerekli kontrolleri yapalım.

gonder_btn.addEventListener(MouseEvent.CLICK, mesajiGonder);

function mesajiGonder(e:MouseEvent) {
	if (isim_txt.text==""||mail_txt.text==""||konu_txt.text==""||mesaj_txt.text=="") {
		uyari_txt.text="Lütfen tüm alanları eksiksiz doldurun.";
	} else if (mail_txt.text.indexOf("@")==-1||mail_txt.text.indexOf(".")==-1) {
		uyari_txt.text="Mail adresi hatalı. Lütfen kontrol edin.";
	} else {
		var adres:URLRequest=new URLRequest("php/gonder.php");
		var formBilgileri:URLVariables=new URLVariables();
		var phpLoader:URLLoader=new URLLoader();

		adres.method=URLRequestMethod.POST;

		formBilgileri.isim=isim_txt.text;

		formBilgileri.mail=mail_txt.text;

		formBilgileri.konu=konu_txt.text;

		formBilgileri.mesaj=mesaj_txt.text;

		adres.data=formBilgileri;

		uyari_txt.text="Mesajınız gönderiliyor.";

		phpLoader.load(adres);

		phpLoader.addEventListener(Event.COMPLETE, mesajGonderildi);

	}
}

mesajGonderildi fonksiyonunu oluşturalım. Bu fonksiyon ile php dosyasından geri dönen veriyi alacağız. Geriye dönen veriye göre mail gönderme işleminin sonucunu kullanıcıya bildireceğiz.

function mesajGonderildi(e:Event) {
	if (e.target.data=="mesajGonderildi") {
		uyari_txt.text="Mesajınız Gönderildi";
	} else {
		uyari_txt.text="Gönderme sırasında bir hata oluştu. Lütfen tekrar deneyin.";
	}
}

http://resim.sanalkurs.net/uploads/KlasorYaps.jpg

Flash ve ActionScript 3.0 tarafını hallettik. Şimdi de php tarafını halledelim. Php konusunda çok fazla bilgim olmadığı için açıklamalarda çok derine inemeyeceğim. İlk olarak mailin gönderileceği adresi belirlemek için $to adında bir değişken oluşturuyoruz. Değer olarak ise mail adresimizi atyırouz. Sonrasında ActionScript 3.0 ile gönderdiğimiz verileri php içerisinde oluşturulan değişkenlere değer olarak atıyoruz. En son ise mail metodu ile işlemin sonucunu belirleyip echo komutu ile çıktı alıyoruz. ActionScript tarafında mesajGonderildi isimli fonksyionda kontrol ettiğimiz veri buradaki echo komutu ile çıktı alınan veridir.

<?php
$to = "Mail adresinizi buraya yazın.";
$subject = $_POST["konu"];
$headers = "From: " . $_POST["isim"] . "rn";
$headers .= "<".$_POST["mail"].">";
$headers .= "Reply-To: " . $_POST["mail"] . "rn";
$message = $_POST["mesaj"] ;
if( mail($to, $subject, $message, $headers) ){
        echo "mesajGonderildi";
}else if (!mail($to, $subject, $message, $headers)){
         echo "hata";
}
?>

Oluşturduğumuz php dosyasını fla dosyamızı kaydettiğimiz klasör içerisinde php isimli bir klasör oluşturalım ve bu klasör içerisine gonder.php ismi ile kaydedelim.
Kodların tamamı aşağıdaki gibi olacaktır.

ActionScrip 3.0

isim_txt.text="";
mail_txt.text="";
konu_txt.text="";
mesaj_txt.text="";
uyari_txt.text="";
isim_txt.tabIndex=1;
mail_txt.tabIndex=2;
konu_txt.tabIndex=3;
mesaj_txt.tabIndex=4;
temizle_btn.label="Temizle";
gonder_btn.label="Gönder";
stage.focus=isim_txt;
isim_txt.maxChars=30;
mail_txt.maxChars=40;
konu_txt.maxChars=100;
mesaj_txt.maxChars=500;

temizle_btn.addEventListener(MouseEvent.CLICK, formuTemizle);

function formuTemizle(e:MouseEvent) {
	isim_txt.text="";
	mail_txt.text="";
	konu_txt.text="";
	mesaj_txt.text="";
	uyari_txt.text="";
	stage.focus=isim_txt;
}

gonder_btn.addEventListener(MouseEvent.CLICK, mesajiGonder);

function mesajiGonder(e:MouseEvent) {
	if (isim_txt.text==""||mail_txt.text==""||konu_txt.text==""||mesaj_txt.text=="") {
		uyari_txt.text="Lütfen tüm alanları eksiksiz doldurun.";
	} else if (mail_txt.text.indexOf("@")==-1||mail_txt.text.indexOf(".")==-1) {
		uyari_txt.text="Mail adresi hatalı. Lütfen kontrol edin.";
	} else {
		var adres:URLRequest=new URLRequest("php/gonder.php");
		var formBilgileri:URLVariables=new URLVariables();
		var phpLoader:URLLoader=new URLLoader();
		adres.method=URLRequestMethod.POST;
		formBilgileri.isim=isim_txt.text;
		formBilgileri.mail=mail_txt.text;
		formBilgileri.konu=konu_txt.text;
		formBilgileri.mesaj=mesaj_txt.text;
		adres.data=formBilgileri;
		uyari_txt.text="Mesajınız gönderiliyor.";
		phpLoader.load(adres);
		phpLoader.addEventListener(Event.COMPLETE, mesajGonderildi);

	}
}

function mesajGonderildi(e:Event) {
	if (e.target.data=="mesajGonderildi") {
		uyari_txt.text="Mesajınız Gönderildi";
	} else {
		uyari_txt.text="Gönderme sırasında bir hata oluştu. Lütfen tekrar deneyin.";
	}
}

gonder.php

<?php
$to = "Mail adresinizi buraya yazın.";
$subject = $_POST["konu"];
$headers = "From: " . $_POST["isim"] . "rn";
$headers .= "<".$_POST["mail"].">";
$headers .= "Reply-To: " . $_POST["mail"] . "rn";
$message = $_POST["mesaj"] ;
if( mail($to, $subject, $message, $headers) ){
        echo "mesajGonderildi";
}else if (!mail($to, $subject, $message, $headers)){
         echo "hata";
}
?>

Son olarak gelen mesajlarda Türkçe karakter sorunu yaşarsanız. ActionScript kodlarının en başına

System.useCodePage=true;

satırını ekleyin.

Yorum yap

Barış Ozcan Facebook Sayfasi
Barış Ozcan Twitter