Anasayfa İletişim RSS
Gürol Arabacı Derslerini Okumak için Tiklayin Corel Draw Araç Kutusu - 3
Toolbox'taki araçların nasıl çalıştığını iyi bilirsek daha iyi işler yapabiliriz.
 
Şimdi Üye Ol | Şifremi Unuttum
 
Anasayfa » PHP & MySQL (122 ders)
 
PHP'de Form Mail

Yazar: Yunus Emre Pişirici  
Eklenme: 05.10.2007   Okunma: 958    Puan: 3.7   Seviyesi:  Orta
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.
 
  • Currently 3.73/5
Değelendirmek için üye girişi yapmanız gerekmektedir
EkleBunu Sosyal Paylam Butonu
PHP'de Form Mail Dersini Yazdırın

"PHP'de Form Mail" dersi için 31 yorum var

05.10.2007 myp diyor ki:
Basit,güzel ve faydalı olmuş teşekkürler.

08.10.2007 kenan_412 diyor ki:
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

10.10.2007 fiki diyor ki:
çalışmıyor yahu

10.10.2007 fatihh diyor ki:
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

12.10.2007 sanalkursiyer diyor ki:
ob_start ve ob_end_flush fonksiyonları tam olarak ne işe yarıyor acaba?

14.10.2007 oguzhankanbay diyor ki:
senin bu kod diye yazdıgın sey yanlıs kardeşim

14.10.2007 oguzhankanbay diyor ki:
kardeşim bu yanlış sen kodları yanlış wermişsin

15.10.2007 sanalkursiyer diyor ki:
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ı?

17.10.2007 gokhanguney2 diyor ki:
DAHA DENEME AŞAMASINDAYIM

22.10.2007 muzy42 diyor ki:
<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

23.10.2007 Azazael diyor ki:
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)

23.10.2007 yakuphan diyor ki:
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.

23.10.2007 sanalkursiyer diyor ki:
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

03.12.2007 x-T diyor ki:
peki arkadaşlar,biri bu formmailden mail atınca,gelen mailde türkçe karakterler okunamıyo... çözüm ???

04.12.2007 googlee diyor ki:
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

05.12.2007 x-T diyor ki:
sölediğin doru fakat yine aynı sorun var !!!

12.12.2007 sahaf diyor ki:
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ç

13.12.2007 x-T diyor ki:
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>

24.12.2007 hikivhiki diyor ki:
http://http://img212.imageshack.us/img212/7866/avatar31860lg7.jpgParse error: syntax error, unexpected '@' in /home/.../public_html/formmail/gonder.php on line 31

slm. bende böyle bir hata veriyor. sebebi nedir acaba. yanlış bişey mi yapıyorum. yardımcı olabilirmisiniz.

09.01.2008 kivilcim_bu diyor ki:
bu kodlara değişken ekleyerek sipariş formu yapabilir miyim?

17.01.2008 kripteks diyor ki:
kivilcim, evet yapabilirsin

17.01.2008 mucahid1986 diyor ki:
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

20.01.2008 shinoda diyor ki:
Geç cevaplıyor olduğum için üzgünüm.

@sahaf:

eğer boş form alanı kalacak şekilde maillerin gitmemesini ve bir hata mesajının çıkmasını istiyorsan,


$gönderildi=mail(...);


kodlarından önce,

$if(!$degisken1 || !$desgisken2 || ... || !$degiskenx)

{echo"Tüm alanları doldurmak zorundasınız. Lütfen formu kontrol ediniz. <a href=\"javascript:history.go(-1)\">Geri</a>";}


kodlarını eklemelisin. Kodlarda yazım hatası olabilir denemedim yaklaşık son 30 saattir ayaktayım. deneyi

20.01.2008 shinoda diyor ki:
@kivilcim_bu

kripteks'in dediği gibi istediğin değişkenleri atayarak istediğin şekilde sipariş formu hazırlayabilirsin.

20.01.2008 shinoda diyor ki:
ob_start(); ve ob_end_flush(); kodları yakuphan'ın dediği gibi o mantıkla konuldu. Nedeni ise uygulamayı geliştirebilecek kişilerin ileride header() sorunları ile karşılaşmasını önlemek.

16.04.2008 serhat90 diyor ki:
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 :(

16.04.2008 serhat90 diyor ki:
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 :(

01.07.2008 criminal1 diyor ki:
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

02.07.2008 criminal1 diyor ki:
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?

02.07.2008 criminal1 diyor ki:
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

Üye olmadan yorum ekleyemezsiniz !


UYARI: SANALKURS'ta yer alan materyaller ile ilgili her türlü sorumluluk hazırlayan veya gönderene aittir. SANALKURS'ta yer alan hiçbir makale, yazarından izinsiz başka bir yerde yayınlanamaz. SANALKURS kullanıcıları ve üyeleri, üçüncü kişilerin telif hakkı sahibi bulunduğu her türlü fikri eser, fotoğraf, resim vb. materyal ve ürünleri kullanamazlar. SANALKURS kullanıcı ve yazarlarının, üçüncü kişilerin telif hakkı sahibi olduğu yazı, resim vb. ürünleri kullanması durumunda, her türlü hukuki ve cezai sorumluluk kendilerine aittir. Söz konusu haksız kullanım nedeniyle SANALKURS .NET'in hiçbir hukuki sorumluluğu bulunmamakta olup, haksız kullanım nedeniyle SANALKURS.NET'in üçüncü kişilere ödemek zorunda kalabileceği her türlü tazminat ve/veya adli/idari para cezaları ilgili Sanalkurs kullanıcılarından rücu edilecektir.
 İSTATİSTİKLER
XML Kaynağımızdan yararlanarak sitemizdeki derslerimizi masaüstünüzden yada web sitenizden takip edebilirsiniz
ÇEVRİMİÇİ 221 Ziyaretçi, 15 Üye (1 Gizli)
kos.187, turkalone, fikret73, sheak, fotti, byahmetlksz, UlguDizayn, illegal, 1azdeli, desspradoo, sakarcin, kanuni21, Hackkobaz, hakanonline
BUGÜN DOĞUM GÜNÜ OLAN ÜYELERİMİZ:
adige (22), sphered (20), damla damla (18), ziplayanfasulye (102), GüGüS (21), cannurbey (17), lesconcular (17),
Bugün: 4742, Dün: 6925, Bu Ay: 106470, Toplam Ziyaret: 1134336, Toplam Üye: 94310, Son Üye: fikret73
Toplam Ders: 1683, Toplam Yazar: 40, Toplam Dosya: 43, Toplam Link: 109
   
RSS Kaynağımızdan yararlanarak sitemizdeki derslerimizi masaüstünüzden yada web sitenizden takip edebilirsiniz