PHP De Formlar Get Metodu
Form`dan GET
Metoduyla Gelen Bilgiler
Ziyaretçilerimizin ne tür Browser kullandıklarını HTTP_USER_AGENT
değişkeninin değerini alarak ve bu değerin içinde belirli
anahtar kelimeleri aratarak bulabiliriz. Form ile gelen
bilgiler, GET metodu ile alınıyorsa, hem QUERY_STRING, hem de
HTTP_GET_VARS dizisine kaydolur. POST metoduyla aldığımız
bilgileri HTTP_POST_VARS değişkenin değerleri arasında
buluruz. Bunları öğrendiğimize göre, şimdi gerçekten bir HTML
Form`u yapabil ve bununla ziyaretçimizden bilgi alabiliriz.
Basit bir HTML Form`u tasarlayalım. Aşağıdaki kodları
formlar02.htm adılyla kaydedin:
php:
<HTML>
<HEAD>
<TITLE>PHP de Formlar</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
</HEAD>
<BODY>
<FORM ACTION="formlar02_isle.php" METHOD="GET">
Adınız, Soyadınız: <INPUT TYPE="TEXT" NAME="adi">
<br>
Elektronik Adresiniz: <INPUT TYPE="TEXT" NAME="adres">
<br>
<INPUT TYPE="SUBMIT" VALUE="Gönder Gitsin!"> <INPUT TYPE="RESET"
VALUE="Vazgeç, Gönderme!">
</FORM>
</BODY>
</HTML>
Bu Form`la Web tasarım yarışmasına katılmayacağımıza göre,
şimdilik sadece Web Sunucuya bilgi göndermekte kullanabiliriz.
Form`un ACTION parametresine dikkat ederseniz, formlar02_isle.php
adlı bir dosyanın adını göreceksiniz. Bu, ziyaretçinin Gönder
düğmesini tıklamasıyla birlikte Form`un içerdiği bilgilerin
METHOD parametresinde pazılı olan GET yöntemiyle Sunucu`da
gönderileceği programın adıdır. Bu sayfa, Browser`da şöyle bir
görüntü verecektir:
Şimdi bir an için ne olacağını düşünmeden, formu doldurun ve
Gönder düğmesini tıklayın; ve Browser`ınızdaki hata mesajına
aldırmadan, URL adres kutusunda ne yazdığını okuyun:
http://server/formlar02_isle.php?adi=Muharrem+Ta%E7&adres=interaktifpazar@hotmail.com
Bu, HTTP protokolüne göre GET yoluyla bilgi göndermekte
kullanılan yöntemin tam bir örneğidir: Browser, GET yoluyla
bilgi göndereceği zaman, Form`daki bütün bilgileri URL-Encoding
denen sistemle kodlar; Form`un alan adlarına o alanlara
ziyaretçinin yazdığı bilgileri bir eşittir işaretiyle ekler;
bu tür alan=girdi çiftlerinin arasına & (ve işareti) koyar ve
gönderir. Web sunucu, bu bilgileri alınca, önce kendi
oluşturduğu bazı değişkenlere (hem QUERY_STRING, hem de HTTP_GET_VARS
dizisine) yazar ve sonra URL hanesinde adı yazılı olan
programa (sayfaya) verir. Şimdi bizim bu bilgilerin
gönderildiği PHP programını kendisine verilecek bu bilgileri
işlemeye hazır şekilde yazmamız gerekir. Şu aşağıdaki kodları
formlar02_isle.php adıyla kaydedin:
php:
<HTML>
<HEAD>
<TITLE>PHP de Formlar</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
</HEAD>
<BODY>
<?php
$adi = $HTTP_GET_VARS["adi"];
$adres = $HTTP_GET_VARS["adres"];
print ("Sayın <b>$adi</b>n");
print ("<p>Elektronik adresiniz: <b>$adres </b></p>n");
?>
</BODY>
</HTML>
Şimdi, Browser`ınızda formlar02.htm sayfasını yeniden açın,
Form`u doldurun ve gönderin. Açılacak sayfa, Form`un
gönderecğii bilgileri alacak ve kendi görünteleyecektir.
Fakat burada gördüğünüz gibi Sunucu`nun ziyaretçiden gelen
bilgileri depoladığı dizileri kullanmadık. Bunu yaparken, GET
ile gelen bilgiler kendisinde verildiğinde PHP programının
alan adlarını değişken adı, bunların karşısında yazılı olan
verileri de bu değişkenin değeri saymasından yararlandık.
Fakat isteseydik, buu değişkenleri, Sunuc`nun oluşturduğu
dizilerden de alabilirdik. Şimdi hem Form`umuzu geliştirelim;
hem de bu kez okuma işini Sunucu dizisinden yapalım.
Önce Form`umuzu değiştirelim ve formlar03.htm adıyla
kaydedelim:
HTML:
<FORM ACTION="formlar03_isle.php" METHOD="GET">
Adınız, Soyadınız: <INPUT TYPE="TEXT" NAME="adi">
<BR>
Elektronik Adresiniz: <INPUT TYPE=TEXT" NAME="adres">
<BR>
Hangi notunuzu öğrenmek istiyorsunuz?
<BR>
<SELECT NAME="hangi_not">
<OPTION> Lütfen seçiniz
<OPTION>Sınav 1
<OPTION>Sınav 2
<OPTION>Ortalama
</SELECT>
<BR>
<INPUT TYPE="SUBMIT" VALUE="Gönder Gitsin!"> <INPUT TYPE="RESET"
VALUE="Vazgeç, Gönderme!">
</FORM>
Yeni Form`da yeni bir HTML unsuruna yer verdiğimizi ve SELECT..OPTION
etiketi ile ziyaretçiye bir seçim imkanı verdiğimizi
görüyorsunuz. Şimdi, bu Form`un göndereceği bilgileri
işleyecek PHP programını yazalım. Aşağıdaki kodları
formlar03_isle.php adıyla kaydedelim:
php:
<HTML>
<HEAD>
<TITLE>PHP de Formlar</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
</HEAD>
<BODY>
<?php
foreach ($HTTP_GET_VARS as $anahtar=>$deger ) {
print ("<b>$anahtar = $deger <br>n");
}
?>
</BODY>
</HTML>
Demiştik ki, Web sunucu, bir istemci Browser`dan kendisine GET
yöntemiyle yollanan Form bilgilerini $HTTP_GET_VARS adlı dizi
değişkende tutar. Yine daha önce görmüştük ki dizi
değişkenlerin içinde ya sayı ya da isim olarak bir anahtar ve
bu anahtarın temsil ettiği bir değer vardır. Burada, $HTTP_GET_VARS
değişkeninin anahtar ve değerlerini $anahtar ve $deger
değişkenlerine => operatörünün yardımıyla, bir foreach döngüsü
içinde atıyoruz. Döngü kullanmamızın sebebi, dizi değişkenin
içinde birden fazla anahtar=değer çifti bulunması ihtimali
bulunması; döngü olarak da foreach kullanmamızın sebebi dizide
kaç adet anahtar=değer çifti bulunduğunu bilmememizdir.
Form sayfasının gönderdiği bilgilerin nasıl derlenip toplanıp
URL-koduyla Sunucuya gönderildiğini, Form`un Gönder düğmesini
tıkladığımızda Browser`ın URL adres hanesinde ilen bilgilerin
görülecektir. Buradaki örnekte bu bilgi (HTTP bölümünü ve URL
kodlarını kaldırarak):
adi=Şahika+Tabak&adres=stabak@somenet.com&hangi_not=Sınav+1
şeklindedir. Bu bilgi, sunucu tarafından $HTTP_GET_VARS dizi
değişkeninin içine yazıldığına göre, daha önce gördüğümüz gibi
dizi değişkenlerin anahtarlarını ve bu anahtarların temsil
ettiği değerleri bir döngü içinde $anahtar ve $deger
değişkenlerine atarsak, daha sonra bu değişkenlerin
değerlerini Browser penceresine göndermemiz mümkün olur.
|