Merhabalar..PHP’de HTML Formları kullanıcı ile etkileşimli işlemlerin gerçekleştirdiği yapılardır. Normalden biraz uzun bir konu. Bu yüzden bu konuyu 3 yazıda anlatacağım.
Bir HTML sayfasının form nesnesi <form> ve </form> etiketleri arasında yer almalıdır. Form etiketinin ise name, action, ve method olmak üzere 3 temel özelliği vardır. Bunlardan name forma isim vermede, action formu işleyecek program parçasının adresini belirtmede ve method formdaki verilerin işlenme şeklini belirlemede kullanılır.
Bir formun işlenme yöntemi POST ve GET olmak üzere 2 çeşittir. GET metodunda gönderilen veriler adres satırında görülür, POST metodunda görülmez. Örneğin GET metoduyla isim ve soyisim girdiğimiz bir php dosyasının adres satırı;
- http://localhost/deneme.php?adi=soner&soyadi=gonul
olarak görülecektir. Bu yüzden şifre girişleri gibi web tarayıcısının adres çubuğunun gözükmesini istemediğiniz işlemlerde genellikle POST metodu tercih edilir.
- <html>
- <body>
- <form name=”form1″ action=”deneme.php” method=”GET”>
- <pre>
- Adı :<input type=”text” name=”adi” value=”"><br>
- Soyadı :<input type=”text” name=”soyadi” value=”"><br>
- <input type=”submit” value=”Gönder”>
- </pre>
- </form>
- </body>
- </html>
Yukarıdaki kodu çalıştırırsanız aşağıdaki gibi bir sonuç alırsınız. Ben kendi bloğum üzerinden çalıştırıyorum.

Ad ve soyad kısmına soner ve gonul girersek;
sonucunu alırız.
Kodu biraz değiştirelim.
- <html>
- <body>
- <from name=”form1″ action=”deneme.php” action=”GET”>
- <pre>
- Adı :<input type=”text” name=”adi” value=”"<br>
- Soyadı :<input type=”text” name=”soyadi” value=”"<br>
- <input type=”submit” value=”Gönder”>
- </pre>
- <?php
- if( isset($_GET['adi']) && isset($_GET['soyadi']) )
- {
- echo “Adınız : “.$_GET['adi'].”<br>”;
- echo “Soyadınız : “.$_GET['soyadi'].”<br>”;
- }
- ?>
- </body>
- </html>
Bu örnekte HTML formu kendisine gönderilmiştir. Programın 11. satırındaki isset fonksiyonuyla eğer hem adi hem de soyadi kısmı doldurulmuş ise submit butonuna tıklanıldığında (Gönder) 11. satırdaki şart sağlanacak ve if yapısının içerisi çalıştırılacaktır. Çıktı şu şekilde olur;

Eğer yukarıdaki kodu POST metoduyla yapsaydık fark eden tek şey adres çubuğunda hiçbir değişkenin görülmemesi olacaktı.
- Form Metin Kutusu Nesnesi
İki çeşittir. HTML de tanımlanırken <input> etiketi kullanılır. Bu etiketin name, size, type, value, maxlength olmak üzere 5 temel özelliği vardır.
Name; metin kutusuna verilen ismi ifade eder.
Size; metin kutusunun genişliğini belirlemede kullanılır.
Type; text ya da password olmak üzere 2 değer alır. Text olduğunda yazı, password olduğunda yıldız ya da nokta görünür.
Value; metin kutusuna başlangıç değeri vermeye yarar.
Maxlength; yapılan girişlerde karakter sayısını sınırlamada kullanılır.
- <html>
- <body>
- <form name=”form1″ action=”deneme.php” method=”POST”>
- <pre>
- Kullanıcı: <input type=”text” name=”kullaniciadi” value=”" maxlength=”12″><br>
- Şifresi : <input type=”password” name=”sifre” value=”" maxlength=”15″><br>
- <input type=”submit” value=”Gönder”>
- </pre>
- </form>
- </body>
- </html>
Kullanıcı adının max 12 ve şifrenin max uzunluğu 15 olan sayfanın çıktı şu şekilde olur.

Biz bu girişlerde kullanıcı adının ya da şifrenin boş olduğunu veya kullanıcı adının sonunda boşluklar olup olmadığını kontrol etmedik. Şimdi bunları ele alalım. Kullanıcı adının ya da şifrenin boş girilmemesini önlemek için empty() fonksiyonunu kullanırız. Eğer kullanıcı adının ya da şifrenin başında veya sonunda boşluk olup olmadığını da trim() fonksiyonuyla kontrol edebiliriz. Önce trim fonksiyonuyla değişkenlerin sağında ya da solundaki boşluklar temizlenmeli sonra empty fonksiyonu ile boşluk kontrolü yapılmalıdıri.
- <?php
- if ( isset ( $_POST[' kullaniciadi '] ) && isset ( $_POST[' sifre '] )
- {
- $kulAd = trim ( $_POST[' kullaniciadi '] );
- $sifre = trim ( $_POST[' sifre '] );
-
- if ( !empty($kulAd) && !empty($sifre) )
- {
- echo “Kullanıcı adı = $kulAd <br>”;
- echo “Şifre = $sifre”;
- }
- else
- echo “Kullanıcı adı veya şifre boş bırakılamaz!”;
- }
- ?>
Bu tarz giriş ekranlarında karşılaşılan diğer bir durum ise SQL Injection olarak adlandırılan teknikle, sisteme yapılan şifresiz girişlerdir. Bu teknikle, kullanıcı adı ve şifresi içinde tek tırnak ve boşluk gibi özel karakterler kullanılıp SQL sorgusunun bütün kayıtları getirmesi sağlanır. Bunun için karakterleri temizlemede str_replace() fonksiyonundan faydalanabilir.Örneğin;
- <?php
- if ( isset ( $_POST[' kullaniciadi '] ) && isset ( $_POST[' sifre '] ) )
- {
- $kulAd = trim ( $_POST[' kullaniciadi '] );
- $sifre = trim ( $_POST[' sifre '] );
- $silkarakter = array (“‘”, ” “);
- $kulAd = str_replace ( $silkarakter, ” “, $kulAd );
- $sifre = str_replace ( $silkarakter, ” “, $sifre );
- if ( !empty( $kulAd ) && !empty( $sifre ) )
- {
- echo “Kullanıcı adı = $kulAd <br>”;
- echo “Şifre = $sifre”;
- }
- else
- echo “Kullanıcı adı veya şifre boş bırakılamaz!”;
- }
- ?>
6. satırda silinecek tek tırnak ve boşluk karakterlerini $silkarakter dizisine aldık. str_replace() ile bu dizideki tüm karakterler kullanıcı adı ve şifreden silinmiştir.
Görüşmek üzere..
Related posts