[TBR=https://forum.mevsim.org/makale/PHP-Tutorials-Guides-and-More.png][/TBR]
PHP’de ziyaretçilerden ve kullanıcılardan bilgi almak için formları kullanacağız. Formlar sayesinde kodları dışarıdaki verilere ve dinamik içeriklere açarız. Mesela giriş formları, e-mail gönderme formları, hesaplama formları, yönetim panelleri vesaire.
Ziyaretçilerin forma yazdıkları değerleri burada bahsettiğimiz $_GET, $_POST ve $_REQUEST global dizileri aracılığyla PHP’de bir değişkene atarız.
HTML formu ile PHP scriptimize göndereceğimiz her bir form elemanı PHP de gönderdiğimiz metod türüne göre $_GET ya da $_POST içinde bir eleman olur. Yani bizi dışarıdaki hayata bağlayan ve dışarıdan bilgi almamızı sağlayan köprülerimiz, pencerelerimiz $_GET ve $_POST global değişkenleridir.
HTML Form yapımı
PHP’ye verileri göndermek için önce bir arayüz tasarlamamız gerekiyor. Verilerin gönderileceği bir form tasarlamamız gerekiyor.
Bir HTML formunu taslak şeklinde çizelim:
Temel form elemanları
Formun içerisine yerleştireceğimiz bir çok form elemanı mevcut. Metin alanları, parola alanları, çoklu onay kutucukları, radyo butonları, gönderme butonları, dosya seçim elemanları gibi çeşit çeşit form elemanı mevcuttur.
Her bir form elemanında “name” parametresi olmak zorundadır. Bu paramtre o elemanın ismini belirtir. Her form elemanının bu parametresine yazacağımız isim sayesinde PHP’de buluruz.
Aynı şekilde varsayılan form elemanı değerini belirlemek ya da radyo butonların değerini belirlemek içinde “value” parametresini kullanırız. Bu parametreye yazacağımız değerler PHP’de o elemanın değerini belirler.
Hemen bunlardan yeni bir form örneği oluşturup tablodaki örnekleri uygulamalı olarak gösterelim:
Form gönderme metodları (GET ve POST) arasındaki farklar
İki tane metodumuz var, bunlar GET ve POST. İkiside formumuzdaki verileri PHP scriptimize göndermeye yarıyor. Tek farkları verileri gönderme yolları.
Eğer metod olarak GET’i seçersek formu gönderdiğimizde PHP dosyamızın adı index.php ise adres çubuğunda gönderdiğimiz değerler yazacaktır. Örneğin: şeklinde olacaktır.
POST seçtiğimizde ise GET’de olduğu gibi gönderdiğimiz veriler adres çubuğundan değilde browser üzerinden gönderilir. Yani seçtiğimzi PHP sayfasına içten gönderilir, aynı cookie ve sessionlar gibi.
Örnekler ile gösterelim:
index.php adında bir dosya oluşturalım ve içerisine aşağıdaki kodu ekleyelim.
Ve bu sayfaya index.php?isim=musa şeklinde girelim. Wamp kullanıyorsanız şeklinde olacaktır. Sonuç olarak ekranda adres çubuğunda belirttiğimiz isim değeri yani musa yazar.
GET metodunu kullanmak için bir forma ihtiyaç yoktur fakat POST metodu yanlızca bir form ile gönderilir.
Bir örnek daha yapalım, bu sefer bir matematik işlemi yaptıralım:
carp.php adında bir dosya oluşturuyoruz ve aşağıdaki kodları yazıyoruz:
carp.php?x=10 şeklinde girdiğimizde ekranda 50 yazacaktır. Adres çubuğuna yazacağımız her x değerini 5 ile çarpıp ekrana yazacaktır.
Formu kontrol etmek
Bir formun verilerini işlemeden önce bize form ile veri gönderilip gönderilmediğini ya da gönderilen değerlerinin boş olup olmadığını kontrol etmemiz gerekiyor. Bunun içinde if ifadesini, isset() ve empty() fonksiyonunu kullanacağız.
İlk olarak basit bir form yapalım, dosyamızın adı giris.php olsun, buradan kontrol.php ye veri göndereceğiz:
Şimdide kontrol.php‘nin içeriğini kodlayalım ve kontrolümüzü yapalım:
İlk koşulda “isset($_POST[‘kullanici’]) && isset($_POST[‘sifre’])” $_POST[‘kullanici’] ve $_POST[‘sifre’] diye bir değişken tanımlanmış mı diye sorduk. Eğer ikiside tanımlanmış ise bu ifadenin kod bloğuna yazdığımız ikinci bir koşul daha devreye giriyor ve bu sefer gönderilmiş olan verilerin boş mu olup olmadığına bakıyor.
İkinci koşulda “empty($kullanici) || empty($sifre)” $kullanici değişkeninin değeri boşsa ya da $sifre değişkeninin değeri boşsa diye bir koşul tanımlıyoruz. Eğer ikisinden birisinin içeriği boşsa bu sefer ekrana uyarı olarak Lütfen boş bırakmayın yazdırıyoruz. Eğer ikiside boş değilse bu seferde ekrana forma yazdığımız kullanıcı adı ve şifre çıkıyor.
Bu örnekte aynı zamanda iç içe if ifadesi kullanmayıda göstermiş olduk.
Form ile kullanıcı girişi
Bu konudan ayrılmadan önce basit bir örneklede kullanıcı girişi olayını göstermek istiyorum. Veritabanı ve fazla detaya girmeden session ve form kullanarak bir kullanıcı girişi olayı yapalım.
Yukarıdaki giris.php örneğindeki formu kullanalım. O form bize kullanici ve sifre adında iki veri gönderilmesini sağlıyordu. Bunun yanında biz bir kontrol ve bir de panel sayfası yapacağız.
Kontrol sayfasında gönderilen kullanıcı adı ve şifrenin bizde kayıtlı kullanıcı adı ve şifre ile aynı olup olmadığına bakacağız, eğer bizdekiler ile aynı ise bu değerleri session ile kaydedeceğiz sonrasında panel.php‘ye gönderip giren kişinin giriş yapıp yapmadığını kontrol edip ona göre kullanıcıya özel olan sayfayı göstereceğiz.
kontrol.php:
Burada bir önceki örnekteki form kontrol etme ifadelerinden sonra ekstra olarak bir gönderilenlerin tam olarak ne olduğunu da kontrol eden bir ifade ekledik. Eğer değerler boş değilse ve istediğimiz değerlere eşit ise session başlatıp kullanici ve sifre adında iki adet session oluşturduk. Bu oluşturduğumuz session değerlerinin içerisine yine şifremizi kaydettik. Bu bilgiler browser kapatılana kadar silinmeyeceği için bu süreç içinde kullanıcı oturum yapmış şekilde gözükecek ve panel.php’ye girdiğinde ona kullanıcı içeriğini gösterecektir.
panel.php:
Burada ise kontrol.php de gönderilen POST verilerini kontrol ettiğimiz gibi SESSION verilerini kontrol ettik. Sadece 1 kere giris.php üzerinden giriş yaptıktan sonra bir oturum boyunca panel.php sayfasında oturum açmış bir şekilde durabiliriz.
İşte genel olarak kullanıcı girişinin ve form kullanımının mantığı budur.
PHP’de ziyaretçilerden ve kullanıcılardan bilgi almak için formları kullanacağız. Formlar sayesinde kodları dışarıdaki verilere ve dinamik içeriklere açarız. Mesela giriş formları, e-mail gönderme formları, hesaplama formları, yönetim panelleri vesaire.
Ziyaretçilerin forma yazdıkları değerleri burada bahsettiğimiz $_GET, $_POST ve $_REQUEST global dizileri aracılığyla PHP’de bir değişkene atarız.
HTML formu ile PHP scriptimize göndereceğimiz her bir form elemanı PHP de gönderdiğimiz metod türüne göre $_GET ya da $_POST içinde bir eleman olur. Yani bizi dışarıdaki hayata bağlayan ve dışarıdan bilgi almamızı sağlayan köprülerimiz, pencerelerimiz $_GET ve $_POST global değişkenleridir.
HTML Form yapımı
PHP’ye verileri göndermek için önce bir arayüz tasarlamamız gerekiyor. Verilerin gönderileceği bir form tasarlamamız gerekiyor.
Bir HTML formunu taslak şeklinde çizelim:
PHP:
<form action="formun gönderileceği sayfa" method="formun verilerini gönderme metodu">
buraya ise formun elemanları gelecek.
</form>
Formun içerisine yerleştireceğimiz bir çok form elemanı mevcut. Metin alanları, parola alanları, çoklu onay kutucukları, radyo butonları, gönderme butonları, dosya seçim elemanları gibi çeşit çeşit form elemanı mevcuttur.
Her bir form elemanında “name” parametresi olmak zorundadır. Bu paramtre o elemanın ismini belirtir. Her form elemanının bu parametresine yazacağımız isim sayesinde PHP’de buluruz.
Aynı şekilde varsayılan form elemanı değerini belirlemek ya da radyo butonların değerini belirlemek içinde “value” parametresini kullanırız. Bu parametreye yazacağımız değerler PHP’de o elemanın değerini belirler.
Hemen bunlardan yeni bir form örneği oluşturup tablodaki örnekleri uygulamalı olarak gösterelim:
PHP:
<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>
İki tane metodumuz var, bunlar GET ve POST. İkiside formumuzdaki verileri PHP scriptimize göndermeye yarıyor. Tek farkları verileri gönderme yolları.
Eğer metod olarak GET’i seçersek formu gönderdiğimizde PHP dosyamızın adı index.php ise adres çubuğunda gönderdiğimiz değerler yazacaktır. Örneğin: şeklinde olacaktır.
POST seçtiğimizde ise GET’de olduğu gibi gönderdiğimiz veriler adres çubuğundan değilde browser üzerinden gönderilir. Yani seçtiğimzi PHP sayfasına içten gönderilir, aynı cookie ve sessionlar gibi.
Örnekler ile gösterelim:
index.php adında bir dosya oluşturalım ve içerisine aşağıdaki kodu ekleyelim.
PHP:
echo $_GET['isim'];
GET metodunu kullanmak için bir forma ihtiyaç yoktur fakat POST metodu yanlızca bir form ile gönderilir.
Bir örnek daha yapalım, bu sefer bir matematik işlemi yaptıralım:
carp.php adında bir dosya oluşturuyoruz ve aşağıdaki kodları yazıyoruz:
PHP:
$sayi = $_GET['x'];
$sonuc = $sayi * 5;
echo $sonuc;
carp.php?x=10 şeklinde girdiğimizde ekranda 50 yazacaktır. Adres çubuğuna yazacağımız her x değerini 5 ile çarpıp ekrana yazacaktır.
Formu kontrol etmek
Bir formun verilerini işlemeden önce bize form ile veri gönderilip gönderilmediğini ya da gönderilen değerlerinin boş olup olmadığını kontrol etmemiz gerekiyor. Bunun içinde if ifadesini, isset() ve empty() fonksiyonunu kullanacağız.
İlk olarak basit bir form yapalım, dosyamızın adı giris.php olsun, buradan kontrol.php ye veri göndereceğiz:
PHP:
<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 kontrol.php‘nin içeriğini kodlayalım ve kontrolümüzü yapalım:
PHP:
<?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';
}
?>
İlk koşulda “isset($_POST[‘kullanici’]) && isset($_POST[‘sifre’])” $_POST[‘kullanici’] ve $_POST[‘sifre’] diye bir değişken tanımlanmış mı diye sorduk. Eğer ikiside tanımlanmış ise bu ifadenin kod bloğuna yazdığımız ikinci bir koşul daha devreye giriyor ve bu sefer gönderilmiş olan verilerin boş mu olup olmadığına bakıyor.
İkinci koşulda “empty($kullanici) || empty($sifre)” $kullanici değişkeninin değeri boşsa ya da $sifre değişkeninin değeri boşsa diye bir koşul tanımlıyoruz. Eğer ikisinden birisinin içeriği boşsa bu sefer ekrana uyarı olarak Lütfen boş bırakmayın yazdırıyoruz. Eğer ikiside boş değilse bu seferde ekrana forma yazdığımız kullanıcı adı ve şifre çıkıyor.
Bu örnekte aynı zamanda iç içe if ifadesi kullanmayıda göstermiş olduk.
Form ile kullanıcı girişi
Bu konudan ayrılmadan önce basit bir örneklede kullanıcı girişi olayını göstermek istiyorum. Veritabanı ve fazla detaya girmeden session ve form kullanarak bir kullanıcı girişi olayı yapalım.
Yukarıdaki giris.php örneğindeki formu kullanalım. O form bize kullanici ve sifre adında iki veri gönderilmesini sağlıyordu. Bunun yanında biz bir kontrol ve bir de panel sayfası yapacağız.
Kontrol sayfasında gönderilen kullanıcı adı ve şifrenin bizde kayıtlı kullanıcı adı ve şifre ile aynı olup olmadığına bakacağız, eğer bizdekiler ile aynı ise bu değerleri session ile kaydedeceğiz sonrasında panel.php‘ye gönderip giren kişinin giriş yapıp yapmadığını kontrol edip ona göre kullanıcıya özel olan sayfayı göstereceğiz.
kontrol.php:
PHP:
<?php
if(isset($_POST['kullanici']) && isset($_POST['sifre'])) { // form gönderilmiş mi
$kullanici = $_POST['kullanici'];
$sifre = $_POST['sifre'];
if(empty($kullanici) || empty($sifre)) { // gönderilenler boş mu
echo 'Lütfen boş bırakmayın';
} else {
if($kullanici == 'musa' && $sifre == '123456') { // bilgiler doğru mu
session_start();
$_SESSION['kullanici'] = 'musa';
$_SESSION['sifre'] = '123456';
echo 'Giriş yaptınız! Şimdi panel.php ye girebilirsiniz.';
} else {
echo 'Yanlış kullanıcı adı ya da şifre';
}
}
} else {
echo 'Lütfen formu kullanın';
}
?>
Burada bir önceki örnekteki form kontrol etme ifadelerinden sonra ekstra olarak bir gönderilenlerin tam olarak ne olduğunu da kontrol eden bir ifade ekledik. Eğer değerler boş değilse ve istediğimiz değerlere eşit ise session başlatıp kullanici ve sifre adında iki adet session oluşturduk. Bu oluşturduğumuz session değerlerinin içerisine yine şifremizi kaydettik. Bu bilgiler browser kapatılana kadar silinmeyeceği için bu süreç içinde kullanıcı oturum yapmış şekilde gözükecek ve panel.php’ye girdiğinde ona kullanıcı içeriğini gösterecektir.
panel.php:
PHP:
<?php
session_start(); // session kullanımı başlattık
if(isset($_SESSION['kullanici']) && isset($_SESSION['sifre'])) { // bu sefer sessionlar tanımlanmış mı diye bakıyoruz
if($_SESSION['kullanici'] == 'musa' && $_SESSION['sifre'] == '123456') {
echo 'Panele hoşgeldiniz! Bu yazıyı sadece giriş yapmış kişiler görebilir.';
} else {
session_destroy(); // bilgileri yanlış olduğu için sessionlar silinir
echo 'Bilgileriniz yanlış, buraya yanlızca giriş yapmış kişiler girebilir';
}
} else {
echo 'Sadece giriş yapmış kişiler görebilir';
}
?>
İşte genel olarak kullanıcı girişinin ve form kullanımının mantığı budur.