HTML ve Form Etiketleri
PHP betiklerinin türkçe problemleri olmadan, daha kullanıcı dostu bir sayfa kullanarak çalıştırılabilmesi için betiklerin içine HTML etiketlerinin eklenmesi zorunludur. Bu amaçla yüklenebilecek en temel HTML deseni aşağıdaki gibi olabilir. Bu örnek kod ile hem başlık çubuğunda istediğimiz sonucu görüntüleriz hem de türkçe problemleri çözülecektir. ___________________________________________
<html> <head> <title>HTML</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" /> </head> <body> </body> </html> ___________________________________________HTML ve PHP birlikte kullanılacaksan, HTML de formların nasıl kullanıldığını kavramak gerekir. Burada basitçe formların nasıl kullanılacakları anlatılacaktır.HTML de form oluşturabilmek için form etiketinden yararlanılır. İleride üzerinde durulacak nedenlerden ötürü form etiketi php betiğinin içinde oluşturulacaktır. Bu şekilde form eklenmiş bir döküman kodu aşağıda görülmektedir. ___________________________________________
<html> <head> <title>HTML</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" /> </head> <body> <?php echo "<form name='AlgoritmaFormu' method='get' action=$_SERVER[PHP_SELF] >"; ?> </form> </body> </html> ___________________________________________Burada;
- echo; php komutudur. kendine gelen bilgiyi çıktı olarak gösterir. print komutuda aynı amaçla kullanılabilir.
- form; form etiketidir.
- name; form etiketinin parametresidir. Hazırlanan sayfada birden fazla form olabilir. Farklı formlardan gelen bilgilerin karıştırılmaması için her forma bir isim verilir. Bu formu tanımlayan bir isimdir.
- method; form etiketinin parametresidir. verilerin sunucuya nasıl gönderileceğini belirtir. verileri sunucuya göndermek için ya GET ya da POST yöntemi kullanılır. Aşağıda get ve post yöntemlerinin farklılıkları açıklanmıştır.
- action; form etiketinin parametresidir. Parametrelerin nereye gönderileceği bu alan içinde tanımlanır. Parametreler başka bir sunucudaki başka bir sayfaya bile gönderilebilir. Buradaki örnekte $_SERVER['PHP_SELF'] değişkeni ile çağırılan sayfanın kendine gönderilmiştir. Buraya hangi sayfaya göndermek istiyorsanız o sayfanın adını yazmalısınız.
form etiketi tek başına herhangi bir işe yaramaz. form etiketinin içine uygun bileşenleri ekleyerek kullanabilirsiniz. Bu nedenle yukarıdaki örneği biraz daha geliştirmeliyiz.
___________________________________________<html> <head> <title>pH Hesaplama Betiği</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" /> </head> <body> <?php $C=$_GET['Konsantrasyon']; $Hesapla=$_GET['Hesapla']; echo "<form name='AlgoritmaFormu' method='get' action=$_SERVER[PHP_SELF] >"; echo " Konsantrasyonu : <input name='Konsantrasyon' type='text' value='$C' /> <input name='Gonder' type='submit' value='HESAPLA' /> "; echo "<br/>pH =".-log10($C); ?> </form> </body> </html> ___________________________________________Örnekteki satırlar aşağıda açıklanmıştır.
Yukarıdaki kodun kötü taraflarına gelince;
- input; form içinde kullanılan etiketlerden nesne etiketidir. Çeşitli tiplerde olabilir. Buradaki örnekte type parametresi text; olduğunda içine veri girilen bir text kutusu oluşur. submit; olduğunda ise bir buton oluşur.
- Hangi verinin hangi nesneye ait olduğunun belirlenmesi için her nesneye bir isim verilmelidir. Bu örnekte ilk input nesnesi Konsantrasyon olarak ikinci input nesnesi ise Gonder olarak adlandırılmıştır.
- value; input kutusundaki name değerinin aldığı değeri gösterir.
- Konsantrasyon kutusuna 0.02 değeri girilip HESAPLA butonuna basılırsa adres çubuğundaki metnin
HTMLveFormlar.php?Konsantrasyon=0.02&Gonder=HESAPLA
şeklinde olduğunu görebilirsiniz. Buradan da görüldüğü gibi Konsantrasyon adlı input kutusunun içindeki değer adres çubuğunda Konsantrasyon=0.02 şeklinde görülüyor. İkinci Gonder adlı input kutusunun ile ilgili olarak adres çubuğundaki Gonder=HESAPLA bilgisini görebilirsiniz.- Adres çubuğundan gönderilen Konsantrasyon $_GET['Konsantrasyon'] ile alınarak $C değişkenine atanmıştır.
- Konsantrasyon adlı kutunun value='$C' olduğudan gönderilen $C değeri kutu içinde yeniden görüntülenmiştir.
- echo "<br/>pH =".-log10($C); satırında ise;
- log10 PHP de 10 tabanına göre bir sayının değerini hesaplar.
- "<br/>pH =".-log10($C) buradaki . ile <br/>pH = metni ile elde edilen sonuç metin birleştirilmiştir.
Bu iki problemi düzeltebilmek için bu satır
- Sayfa ilk çağrılığında $C boş olduğundan log10($C) tanımsız olduğundan pH =INF olarak görüntüleniyor.
- 0.02 konsantrasyon değeri için pH =1.69897000434 olarak görüntülenir. Bu değer anlamlı değildir.
if ($C>0) {echo "<br/>pH =".round(-log10($C),2); }şeklinde düzenlenebilir (Örnek).
Burada;
- if ($C>0) { } Eğer $C sıfırdan büyükse { } arasındaki değeri göster demektir. 0.02 değeri sıfırdan büyük olduğundan { } alanı içindeki kodlar çalışır. if komutu üzerinde daha sonra durulacaktır.
- round sayıları yuvarlamak için kullanılan bir PHP komutudur. Burada komut round(log10($C)) komutu $C=0.02 değeri için;
round(-log10($C),2) round(-log10(0.02),2) round(1.69897000434,2) 1.70 1.7 dönüşümü yapılıyor diye düşünebilirsiniz.GET ve POST Yöntemleri
GET Yöntemi :
Belirtilen bir kaynaktan gelen verileri toplar.
- GET istekleri ön belleğe alınabilir.
- GET istekleri tarayıcı geçmişinde kalır.
- GET istekleri yer imi eklenebilir.
- GET isteklerinin uzunluk kısıtlamaları var.
- Hassas verilerle uğraşırken hiçbir zaman GET istekleri kullanılmamalıdır.
- GET istekleri yalnızca verileri almak için kullanılmalıdır.
POST Yöntemi :
İşlenecek verileri belirtilen bir kaynağa gönderir.
- POST istekleri asla önbelleğe alınmaz.
- POST istekleri tarayıcı geçmişinde kalmaz.
- POST istekleri yer imlerine eklenemez.
- POST isteklerinin veri uzunluğu üzerinde herhangi bir sınırlaması yoktur.
Son örneği POST a göre aşağıdaki şekilde değiştirerek yeniden deneyiniz (Örnek). İnput kutusuna 0.02 değerini girip formu gönderdikten sonra adres alanına bakınız. adres alanında değişken adları ve değerlerini göremeyeceksiniz. Bu post yönteminden kaynaklanır.
___________________________________________<html> <head> <title>pH Hesaplama Betiği</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" /> </head> <body> <?php $C=$_POST['Konsantrasyon']; $Hesapla=$_POST['Hesapla']; echo "<form name='AlgoritmaFormu' method='post' action=$_SERVER[PHP_SELF] >"; echo " Konsantrasyonu : <input name='Konsantrasyon' type='text' value='$C' /> <input name='Gonder' type='submit' value='HESAPLA' /> "; if ($C>0) {echo "<br/>pH =".round(-log10($C),2);} ?> </form> </body> </html> ___________________________________________
Kaynaklar
- http://tr2.php.net/docs.php (11.02.2018)