PHP Form, kullanıcıların bilgi girişini sağlaması amacıyla html form elementlerini php’de kullanacağız ve get post işlemleri ile sunucuya gönderip verileri nasıl elde edeceğimizi nasıl işleyebileceğimizi göreceğiz.
PHP form kullanımı ve örnekleri
Kullanıcının html formları aracılığıyla girdiği veriler sunucuya gönderildikten sonra $_GET ve $_POST global değişkenleri ile elde edeceğiz. Html form’un method özelliğinde belirtilecek olan get, post değerine göre html form input’larının değerleri sunucu tarafında $_GET yada $_POST global değişkenlerine aktarılacaktır.
Html form yapısı
İlk örneğimize geçmeden önce basit olarak bir html form nasıl oluşturulur bunu göreceğiz.
1 2 3 | <form action="formun gönderileceği sayfa" method="formun verilerini gönderme metodu"> buraya ise formun elemanları gelecek. </form> |
Html form elemanları
Html formları içerisinde veya farklı html elementleri içerisindede kullanabileceğiniz html giriş nesneleri bulunmaktadır şimdi bu html elementlerinin neler olduğuna gözatalım.
Eleman tipi | Açıklaması | Örnek kod | Görünüm |
text | Metin kutusu | <input name="metin" type="text" value="değer" /> | |
password | Metin kutusu ile aynı fakat yazılanlar gösterilmez | <input name="sifre" type="password" value="değer"/> | |
checkbox | İşaretlemeli onay kutusu | <input name="onay" type="checkbox" /> | |
radio | Radyo butonlar | <input name="cinsiyet" type="radio" value="erkek" />Erkek
| Erkek, Kadın |
file | Dosya göndermek için dosya seçme elemanı | <input name="dosya" type="file" /> | |
textarea | Geniş metin alanı | <textarea name="metin">
| |
select, option | Seçim listesi ve seçim listesinin seçenekleri | <select name="liste"> | |
submit | Formu gönderme butonu | <input name="gonder" type="submit" value="Gönder" /> |
Eğer formdaki verileri php sunucuna gönderecekseniz name özelliğinin kullanılması gerekiyor ve tüm inputların name değeri(radio input’u hariç) farklı olmalıdır. buradaki name’ler php sunucusu tarafında giriş yapılan değerlere erişim için kullanılacak.
Şimdi basit bir form hazırlayalım
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <form action="index.php" method="post"> İsim: <br/> <input type="text" name="isim" /><br/> Soyisim: <br/> <input type="text" name="soyisim" /><br/> E-mail: <br/> <input type="text" name="mail" /><br/> Cinsiyet: <br/> <input type="radio" name="cinsiyet" value="e" /> Erkek<br/> <input type="radio" name="cinsiyet" value="k" /> Kadın<br/> Mesaj: <br/> <textarea name="mesaj"></textarea><br/> <input type="submit" value="Formu gönder" /> </form> |
GET ve POST arasındaki farklar
PHP’de kullanacağımız iki method var get ve post ama bunlar haricinden put, patch, delete gibi metodlarda var fakat php’de bizi şuan sadece get ve post metodu ilgilendiriyor. get metodu formdaki verileri sunucuya url’den gönderir üstteki örnek form yapısna verilerin girildiğini varsayıp get metodu ile gönderildiğini düşünürsek şöyle bir url yapısı çıkıyor. index.php?name=murat&soyisim=oner&mail=info@muratoner.net&cinsiyet=e&mesaj=test&bnsp;mesaji
post ile gönderildiğinde değerler url’den değil direk olarak istek içerisine gömülür.
Şimdi basit bir örnek yapalım get yöntemi ile isim değişkeni ve değerinede murat yazalım ve bu murat değerinede php tarafında erişelim index.php?isim=murat şeklinde sayfaya girmeye çalışalım. php tarafında ise alttaki kod ile erişip sayfaya girdiğimiz murat değerini yazdırıyoruz.
index.php dosyası içeriği şu şekilde olacak.
1 2 3 | <?php echo $_GET["isim"]; ?> |
Not: Get metodu için bir forma ihtiyaç yoktur fakat post metodu için bir forma yada ajax, xmlhttprequest gibi aracı teknolojilerden birine ihtiyacınız vardır.
Get ile alakalı bir örnek daha yapıp bilgimizi pekiştirelim ve bu örneğimizde adresten sayi1 ve sayi2 adında iki değişken ve 3 ile 5 değerlerini göndereceğiz. Bu değerleri php ile alıp çarpma işlemine tabi tutacağız ve 15 sonucunu sayfaya yazdıracağız.
carpma.php adındaki dosyamızın içeriği.
1 2 3 4 5 6 | <?php $sayi1 = $_GET['sayi1']; $sayi2 = $_GET['sayi2']; $sonuc = $sayi1 * $sayi2; echo $sonuc; ?> |
Form değerlerini kontrol etme
Kullanıcı tarafından gönderilen veriler bazen istediğimiz şekilde doldurlmamış olabilir mesela en basitinden kullanıcıyı tanımak adına istediğimiz ad, soyad v.b kişisel bilgilerin zorunlu tutulmasını istiyorsak sunucu tarafında verileri işlemeden önce zorunlu olmasını istediğimiz alanlara bilgi girişi yapılıp yapılmadığını öğrenmek amacıyla isset() ve isempty() fonksiyonlarını kullanacağız. Bu fonksiyonlar geriye boolean tipte true veya false değer dönderecektir.
öreğimizde giris.php ve kontrol.php sayfaları oluşturup kullanacağız.
giris.php sayfamız alttaki gibi olacak.
1 2 3 4 5 6 7 8 9 10 11 | <form action="kontrol.php" method="post"> Kullanıcı: <br/> <input type="text" name="kullanici" /> <br/> Şifre: <br/> <input type="password" name="sifre" /> <br/> <input type="submit" value="Giriş yap" /> </form> |
şimdide girilen bu verileri kontrol etmek amacıyla kontrol.php sayfamızı oluşturalım.
kontrol.php sayfası içeriği alttaki gibi olacak.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php if(isset($_POST['kullanici']) && isset($_POST['sifre'])) { $kullanici = $_POST['kullanici']; $sifre = $_POST['sifre']; if(empty($kullanici) || empty($sifre)) { echo 'Lütfen boş bırakmayın'; } else { echo 'Girilen kullanıcı adı: ' . $kullanici . ' şifre: ' . $sifre; } } else { echo 'Lütfen formu kullanın'; } ?> |
ilk if bloğunda isset($_POST['kullanici']) && isset($_POST['sifre'])
koşulunu yorumlarsak kullanici ve sifre değişkenleri $_POST
global değişkeni içerisinde tanımlanmışlarmı diye soruyoruz. Eğer iki değişkende yer alıyorsa bu koşulu geçtiğinde ilk if bloğu içerisine giriş yapılıyor ve sonraki if bloğuna giderek empty($kullanici) || empty($sifre)
koşulları ile $kullanici
ve $sifre
değişkenleri boşmu diye kontrol ediyoruz eğer ikisinden birine herhangi bir değer girilmemiş ise sayfaya Lütfen boş bırakmayın diye bir metin yazdırılıyor. Eğer iki değişkende boş değilse bu sefer sayfaya girmiş olduğumuz kullanıcıadı ve şifre değerleri bastırılıyor.
Bu makalede özetle oluşturduğumuz formlar üzerinden php sunucusuna verileri nasıl gönderebileceğimiz ve sunucu tarafındanda nasıl bu verileri elde edeceğimizi gördük. Başka bir php makalesinde görüşmek dileğiyle. Kodlu günler.
teşekkürler