Hepimiz değilse bile çoğumuz önce Frontpage veya Dreamweaver benzeri bir editor kullandık, herşey iyi güzel giderken iş form koyma, form ile ziyaretçiden bilgi alma işlemine gelince takılıp kalmışızdır. Çünkü statik HTML sayfaları ile formu oluşturabilir fakat daha ilerisine gidemezsiniz. Artık buradan sonrasını server taraflı bir script diline teslim etmemiz gerekiyor. Mesela PHP.
Bir HTML formuna göz atalım;
Basitçe sadece ad ve soyad girilen bu form aslında temel form özelliklerinin hepsini kullanıyor. Form etiketine dikkat edelim :
"action=form.php" : Evet bahsettiğimiz gibi artık HTML devredışı kalacak ve form içeriği işlenmek için server taraflı bir programa gönderilecek. İşte form içinde ki action özelliği gönderilecek progamın yerini belirtmeye yarar. Mesela şu da geçerli bir atamadır: action="http://www.ceviz.net/form.php" veya action="../form.php" gibi...
"method=GET" : Burada formun hangi metod kullanılarak gönderileceği belirtiliyor. İki seçeneğiniz var -aslında iki değil ama genelde sadece ikisi kullanılıyor- : GET veya POST. Bunlardan herhangi birisini seçebilirsiniz, GET veya POST ile veri göndermenin farklarını yazmak uzun olacağından ve bu yazının ötesinde bi şey olduğundan sadece şunu diyelim :
GET ile gönderilen form verileri, adres satırına eklenir. POST ile gönderilenler ise adres satırında görünmez. GET, POST yöntemine göre biraz daha kısıtlı bir metoddur. Herneyse...
Form içinde bilgileri göndermemize yarayan etiketler ise input etiketleridir. Input'lar dışında select etiketleride bu işe yararlar. input etiketi tanımlarken dikkat etmemiz gereken nokta name özelliğidir. input veya select için name özelliği , formu işleyecek olan PHP scriptinde ziyaretçinin girdiği değerleri almak için otomatik oluşacak değişkenleri belirlediği için önemlidir. Neyse fazla soyut tutmadan bir örnekle daha iyi anlayalım :
Form.html dosyamız da şu kodlar olsun :
Ne? Çok mu kısa? Evet çok kısa, çünkü sadece formdan gelen değerleri aldık, ama onları işlemedik, sadece ekrana yazdırdık. Formdan gelen verileri aldıktan sonra artık onları ister veritabanına yazdırır, ister e-mail olarak gönderir, isterseniz hiç umursamazsınız, seçim sizin. Herneyse eğer form POST ile gönderilseydi :
Oldukça basit değil mi? Buraya kadar formdan verileri almanın PHP ile ne kadar kolay olduğunu gördük, şimdi bir iki noktaya dikkat ederek, bu işi hatasız ve mükemmel bir hale getirebilirsiniz.
1- PHP'nin en güzel, güzel olduğu kadar dikkat gerektiren özelliklerinden birisi de 'track_vars' dır. Yani POST, GET ile gönderilen veriler, COOKIE değişkenleri, SESSION değişkenleri oluşturulduğunda PHP motoru bunların her birisi için aynı isimde bir değişkeni otomatik oluşturur. Mesela;
PHP- Kodu:
<? //formda <input type=text name=ad"gt; şeklinde gönderilen bir veri için //$ad değişkeni otomatik olarak oluşturulur. echo "Adınız : $ad"; //veya echo "Soyadınız : $soyad";
?>
Ama bu kullanım biraz dikkat gerektirdiği ve güvenlik açıkları verebilme ihtimalinden dolayı birinci yol daha kullanışlıdır.
2- Ziyaretçi formun gönder tuşuna tıkladığında elbette form üzerinde boş alanlar bırakılmış olabilir(veya bilerek yapmış olabilir). Bu durumda;
PHP- Kodu:
<? $ad = $_GET["ad"]; ?>
kod parçası hata verecektir. PHP size HTTP_GET_VARS dizisinde ad isimli bir indisin olmadığını söyler. Çünkü formda ad isimli input boş bırakıldığı zaman PHP sayfasına bu değişken aktarılmaz ve dolayısıyla olmayan indis hatası verilir. Bunu engellemek için PHP ile kontroller koyabilirsiniz.
PHP- Kodu:
<? // @ işareti bu satırda hata varsa, gözardı edilmesini sağlar $ad = @$_GET["ad"];
if ($ad=="") { die ("Form alanlarından birisi boş bırakılmış..."); } ?>
Şimdilik formlar üzerine söyleyeceklerim bu kadar, tabii ki daha çok şeyler var ama siz kendi formlarınızı oluşturup deneyerek bunların hepsinin üstesinden gelebilirsiniz.
yani emek sarf etmissiniz ama
1. olarak GET yontemi ile form kullanmak cok guvensiz tabi ihtiyac olursa olabilir
2. @$_GET['deger'] burada ki @ isareti sadece mevcut bulunan degiskenin yanindaki deger eger hata verir se hata ciktisini gostermez ama error_reporting(0); bu fonksiyon tamamiyle tum php sayfasinda ki hatalari gostermeyi iptal eder....