PHP'de Form Mail

Kendi websitenizin kendi formmailini hazırlamak istiyor ve kullanıcılarınızın sizinle kolay iletişim kurmasını sağlamaya çalışıyorsanız bu ders size göre...

Merhaba arkadaşlar,

Bir web siteniz var ve gelen ziyaretçilerinizin sizin siteniz üzerinden bir form aracılığı ile sizinle iletişim kurmasını istiyorsunuz. Bunun dışında, sitenize bir iletişim linki koyar altına da e-mail adresinizi verebilirsiniz ancak form-mail uygulaması her zaman için daha etkili ve kullanışlı bir yoldur. Şimdi size anlatacağım form-mail uygulaması php script diliyle yazılmakta ve php çalıştırabilen host'lar üzerinde kullanılabilecek bir uygulamadır.

Öncelikle yapmak istediklerimizi düşünelim. Bize gelen kullanıcının ne gibi özelliklerini yollayacağı form-mail ile isteyebiliriz. Mesela adını ve soyadını isteyebiliriz. E-mail adresini isteyebiliriz ve son olarak elbette yazacağı mesajı isteyeceğiz. Neleri isteyeceğimizi ortaya koyduk:

1-) Ad-Soyad
2-) E-mail Adresi
3-) Yazacağı Mesaj

Şimdi ne yapacağız? Yapacağımız ilk iş, sitemize gelen bu kullanıcının bu bilgileri yazacağı form kodlarını notepad veya benzeri araçlarla hazırlayıp bu kodları index.html veya index.htm uzantısıyla kaydetmek olacaktır. Başlıyoruz:


<html>

<head>

<title>İletişim Kanalı</title>

</head>



<form  action="http://www.sitenizinadresi.com/formmail/gonder.php">http://www.sitenizinadresi.com/formmail/gonder.php" method="post">

<table>

<tr>

<td>Adınız ve Soyadınız:</td><td><input type="text" name="isim"></td></tr>

<tr>

<td>E-Mail Adresiniz:</td><td><input type="text" name="email"></td></tr>

<tr>

<td>Mesajınız:</td><td><textarea name="mesaj" rows="5" cols="25%"></textarea></td></tr>

<tr><td colspan="2" align="right"><input type="submit" name="submit" value="Gönder">

&nbsp<input type="reset" name="reset" value="Sil"></td></tr></table>



</form>

</html>




Şimdi burada ne yaptık? Daha önce belirttiğimiz gibi önce form bilgilerini alacağımız sayfayı oluşturdurk Bunun için biraz HTML (Hyper Text Markup Language) diline hakim olmanız gerekiyor. Her girdi tipine bir isim verdik; örneğin

<input type="text" name="isim">

burada girdi (input) tipine text yazdık ve ismini de "isim" olarak belirledik. Amaç, burada yazdığımız form verilerini daha sonra yollayacağımız gonder.php sayfasındaki değişken değerlerine şimdiden değer vermemizdir ve daha sonra karışıklıklara mahal vermemektir.

Şimdi sıra geldi form verilerini yollayacağımız ve burada çalıştıracağımız daha sonra hedef maile göndereceğimiz php diliyle yazacağımız gonder.php sayfasına. Hemen kodları hazırlıyoruz:




<?php 

ob_start
();



$isim=$_REQUEST['isim'];

$email=$_REQUEST['email'];

$mesaj=$_REQUEST['mesaj'];

$konu='Bir kullanıcı size mesaj yolladı';

$icerik="$isim$mesaj";

$yolla="From: $email";



$gonderildi=mail("mailadresiniz@hotmail.com"$konu$icerik$yolla);



if(
$gonderildi)

{print 
"Mesajınız Gönderilmiştir";}



else



{print 
"Mesaj Gönderilemedi! Tekrar Deniyiniz.";}



ob_end_flush();

?> ?>



Yazdığım bu kodları notepad içine atıp gonder.php uzantısı ile kaydedin. Ardından hostunuza atın. Yazmış olduğum şekilde atacak olursanız, öncelikle hostunuz içerisine formmail dizinini oluşturun ardından .htm ve .php uzantısı şeklinde kaydettiğiniz iki dosyayı formmail klasörü içine atın. Sonra www.adresiniz.com/formmail/index.htm adresine gidin ve kendinize göre ayarladığınız bu kodlarla bir alıştırma yapın. Eğer bir hata olursa bilin ki sorun sizde. Çünkü bu kodları şimdi hazırladım ve denedim hiçbir sorun yok. Alacağınız hataları buradan bildirirsiniz. Eğer alıntı yapacaksanız kaynağı da belirtmeniz, alıntıdan yararlanmak isteyen arkadaşların yaşayacağı problemleri çözmek adına yararlı olacaktır.

Bu tür formmail uygulamaları özellikle "fake mail" denen, kişilerin e-maillerine izinsiz bir şekilde girilmesine sebep olan mantıkla paraleldir. Fake site dediğimiz şey hotmail.com, yahoo.com ve daha aklınıza gelebilecek her türlü kullanıcı adı ve parolanın yazıldığı formların yer aldığı sayfaların kopyasının hazırlanıp başka bir host altında barındırılmasıdır. Bu şekilde hazırlanmış sitelere giren kullanıcılar tıpkı e-mail hesaplarına girdikleri gibi bir giriş sayfasıyla karşılaşıyorlar. Ardından, hiç düşünmeden kullanıcı adlarını ve parolalarını girip başka bir sayfaya yönleniyorlar. Tabi bu sırada girdikleri kullanıcı adı ve parola tıpkı formmail uygulamasındaki gibi hedef maile gidiyor ve hacker mail hesabına gelen bu bilgilerle kurbanın mailine giriş yapıyor. Ondan sonrası bu kötü niyetli kişiye kalıyor. Bu kötü niyetli kişilerin birçoğu fake-siteleri bu şekilde hazırlamıyorlar. Yıllardır birçok hacking sitesinde gözlemlediğim şey, bahsettiğimiz kişilerin bunları hazırlayacak yeterli bilgi birikimine sahip olmadıklarıdır. Daha çok sağdan soldan formmail servisi sağlayan sunucuların hazır kodlarıyla yetiniyorlar ve mantığını kavramadan işe atılıyorlar. Ancak yine de bu fake'i, özellikle günümüzde yutturmak zeka işi. Örneğin bir banka sitesi düşünün. Bu sitenin bazı url uzantıları kendi sayfasında başka sayfaları çağıran bir iframe açıyor. Bu başka siteler URL'de açıkça belli oluyor. Oraya yerleştireceğiniz form kodları ile bir kullanıcının farkına varmadan bilgilerini almış olursunuz. Siz siz olun bu bilgileri kötü amaçlarınıza alet etmeyin.
  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Basit,güzel ve faydalı olmuş teşekkürler.
ellerine sağlık dostum çok güzel anlatmışsında ben yeni oldugum için pek fazla bişi öğrenmedim benim eytimi baştan almam lazım ve bu sitenin yabancısıyım daha yeni üye oldum
çalışmıyor yahu
fiki uygulama güzel çalışıyor ama şu html ile yapılan form sayfasında başa php getirilmesine gerek de yok hani... html kendi içinde zaten form action ile diğer php sayfasına değişkenleri gönderiyor. emeği geçenlere çok teşekkürler
ob_start ve ob_end_flush fonksiyonları tam olarak ne işe yarıyor acaba? :-dusun:
senin bu kod diye yazdıgın sey yanlıs kardeşim
kardeşim bu yanlış sen kodları yanlış wermişsin
oguzhan iki yerde de kodları çalıştırdım ama senin bu kişiye ya garezin var bile bile yapıyosun eleştiriyosun ya da beceremiyosun. hayır bende olmasa şüphelenicem ama çalışıyor maşallah. yazanın ellerine sğlık tekrardan teşekkürler yalnız şu ob_start ve diğeri hakkında hala bilgi sahibi olamadık ben bu fonksiyonları yapmadan da çalıştı acaba ileride bir sorun çıkar mı?
DAHA DENEME AŞAMASINDAYIM
<form action="http://www.sitenizinadresi.com/formmail/gonder.php">http://www.sitenizinadresi.com/formmail/gonder.php" method="post"> yukarıdaki satırda hata var doğrusu <form action= "http://www.adresiniz.com/formmail/gonder.php" method="post"> olarak bi deneyin olabilir kanımca
basite indirgenmiş ve sistemin nasıl calısacagına dair güzel bir örnek biraz daha detay verilerek mesajı gönderen kişinin girdiği değerlerde kontrol edilebilir.Bu örnekde ob_start 'ın kullanılma sebebini anlıyamadım.Sonucta bu fonksiyon kullanılmadanda calısabiliyor. Yunus Emre Pişirici bu fonksiyonu kullanma sebebini acıklarsan sevinirim.(bu fonksiyonu bilmedigimden böyle bir istekde bulunuyorum)
ob_start fonksiyonu php scriptinin çıktısının doğrudan basılmayıp, önce önbelleğe alınmasını sağlar, ob_end_flush fonksiyonu ile ise çıktı ekrana yazdırılır, anlayacağınız ob_start ile başlayan bir scriptten ob_end_flush komutunu görmeden herhangi bir çıktı alamazsınız. Ancak bu fonksiyonlar genellikle header() fonksiyonunun already sent şeklinde hata vermesini engellemeye yönelik kullanılmaktadır.
yakuphan çok saol arkadaşım açıklamalar için. bende şimdilik bir hata vermedi ama kullanmakta yarar var genede anlaşılan. muzy o hatayı bende gördüm ve sildim o kısmı yazım hatası olmuş. orayı silince çalışıyor kendi sitem için böle bişey arıyordum formmail diye bilmiyodum bence daha da geliştirilebili bişey bu mesela üyelik formlarıda aynı mantıkla çalışıyor sanırım
peki arkadaşlar,biri bu formmailden mail atınca,gelen mailde türkçe karakterler okunamıyo... çözüm ???
dostum o tamamen senin mail kutunu gösteren karakter kodlaması ile ilgili. sanıyorum tarayıcını UTF8 e ayarlarsan sorun ortadan kalkar. çünkü bu örneklerde yazılan kelimeler database e kaydedilmiyor. yazıldığı gibi senin mail kutuna postalanıyor
sölediğin doru fakat yine aynı sorun var !!!
yunus emre kardesim bu değerli paylasımın icin tesekkur ederim ben denedim bu haliyle calisti ancak isim veya email girilmedende veriyi yolluyur benim baska sitlerde'ki bu tur ornek form maillerde isim, mail, vsyare bolumleri bos brakıldıgında veriyi yollamıyor ve ayrıca kullanıcıyı bu hususta uyariyor mesla lutfen boslukları duldurunuz veya e-mail adresinizi dugru giriniz.senin bizimle paylastıgın bu form mailde sanırım zikrettigim bu ozellikler mevcut degil ilave edersen çok makbule geç
ben karakter sorununun çözümünü buldum,bu sorunu yaşayan varsa çözüm : <meta http-equiv="Content-Type" content="text/html; charset=windows-1254"> <meta http-equiv="Content-Language" content="tr"> bu kodu iletişim sayfasında <head> tagından hemen snrya ekleyin : <head>bu kod <title></title>
bu kodlara değişken ekleyerek sipariş formu yapabilir miyim?
alanları boş bırakılınca uyarı gelmesini istiyorsanız php dosyasının icinde if ($_post[adi]=""||..) echo "kontol ediniz"; else mesajınız iletildi bu sekilde biras bakın
arkadaslar ben bununla bi siparis formu olusturmak istiyorum ama bunun database de kayıt edilmesini istiyorum bunu naıl sağlayabilirim bu konularda biraz acemiyimde :(
arkadaslar ben bununla bi siparis formu olusturmak istiyorum ama bunun database de kayıt edilmesini istiyorum bunu naıl sağlayabilirim bu konularda biraz acemiyimde :(
ya arkadaşlar kaç oldu gönderiyorum sadece mesajınız gönderilmiştir çıkıyor ama posta kutusuna bakıyorum hala bişi yok. dediğiniz gibi herşeyi yaptık ne gerekiyorsa...talimatlara uyduk... demkki sorun bende değilmiş....kodlarda var bişi. yalnız bi sorun daha var boşta olsa gönderiyor.. nasıl iş anlamaım?birsde ben bunu deenem amaçlı html de kullnıyorum da flasha entegre edecem esas kullanmak istediğim yer orası. nasıl sağlarım flash formdan basitçe anlatabilrmisiniz acaba örnek dosyayı da koyab
kardeşim bu gerçkten göndermiyor yani sorun vbizde değil demekki kodlarda...nasıl göndermiyor evet form boşta olsa(ki bu da ayrı bi sorun) mesajınız gönderilmiştir diye bi sayfayla karşılaşıyoruz ama mailime bakıyorum hemde 4 kere gönderdim gelmedi istrrseniz bakın kaynağı görüntüleyip www.gurselcetin.com/iletisim.html test amaçlı yapıyorum bunları çalıştığı takdirde esas siteye dfahil edicem benim sitem flash yanlız üzerinde çalıştığım orda nasıl yapabilrim bu kodları ordada kullanabilrmiyim?
arkadaşlar geldi mailler neden bu kadar geç geldi bilmyorum ama daha yeni geldi. mail kutum açık bekliyordum refreshledim ve gelen mesajları gördüm ama bi sorun var TR karakterleri bozuk gösteriyor sebebi ne olabilr?çözümü nasıl olmalııdr? <meta http-equiv="Content-Type" content="text/html; charset=windows-1254"> <meta http-equiv="Content-Language" content="tr"> bunları denemdim olmuyor ayrıca bu da çlışmıyor; $if(!$degisken1 || !$desgisken2 || ... || !$degiskenx) {echo"Tüm alanları doldurmak
anlaşılmadı
evet kodlar çalışıyor tşkler

Yukarı Git