PHP İle Formdan 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 Formu
yapabil ve bununla ziyaretçimizden bilgi alabiliriz.
Basit bir HTML Formu tasarlayalım. Aşağıdaki kodları formlar02.htm adılyla kaydedin:
Bu Formla Web tasarım yarışmasına katılmayacağımıza göre, şimdilik
sadece Web Sunucuya bilgi göndermekte kullanabiliriz. Formun 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 Formun içerdiği bilgilerin METHOD parametresinde pazılı olan
GET yöntemiyle Sunucuda gönderileceği programın adıdır. Bu sayfa,
Browserda şö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:
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, Formdaki bütün bilgileri URL-Encoding denen sistemle kodlar;
Formun 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:
Şimdi, Browserınızda formlar02.htm sayfasını yeniden açın, Formu
doldurun ve gönderin. Açılacak sayfa, Formun gönderecğii bilgileri
alacak ve kendi görünteleyecektir.
Fakat burada gördüğünüz gibi Sunucunun 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, bu değişkenleri, Sunucunun
oluşturduğu dizilerden de alabilirdik. Şimdi hem Formumuzu geliştirelim;
hem de bu kez okuma işini Sunucu dizisinden yapalım.
Önce Formumuzu değiştirelim ve formlar03.htm adıyla kaydedelim:
Yeni Formda 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 Formun göndereceği bilgileri işleyecek PHP programını yazalım.
Aşağıdaki kodları formlar03_isle.php adıyla kaydedelim:
Demiştik ki, Web sunucu, bir istemci Browserdan 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, Formun 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 ):
ş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.
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 Formu
yapabil ve bununla ziyaretçimizden bilgi alabiliriz.
Basit bir HTML Formu tasarlayalım. Aşağıdaki kodları formlar02.htm adılyla kaydedin:
Kod Alanı: | |
|
Bu Formla Web tasarım yarışmasına katılmayacağımıza göre, şimdilik
sadece Web Sunucuya bilgi göndermekte kullanabiliriz. Formun 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 Formun içerdiği bilgilerin METHOD parametresinde pazılı olan
GET yöntemiyle Sunucuda gönderileceği programın adıdır. Bu sayfa,
Browserda şö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:
Kod Alanı: | |
|
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, Formdaki bütün bilgileri URL-Encoding denen sistemle kodlar;
Formun 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:
Kod Alanı: | |
|
Şimdi, Browserınızda formlar02.htm sayfasını yeniden açın, Formu
doldurun ve gönderin. Açılacak sayfa, Formun gönderecğii bilgileri
alacak ve kendi görünteleyecektir.
Fakat burada gördüğünüz gibi Sunucunun 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, bu değişkenleri, Sunucunun
oluşturduğu dizilerden de alabilirdik. Şimdi hem Formumuzu geliştirelim;
hem de bu kez okuma işini Sunucu dizisinden yapalım.
Önce Formumuzu değiştirelim ve formlar03.htm adıyla kaydedelim:
Kod Alanı: | |
|
Yeni Formda 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 Formun göndereceği bilgileri işleyecek PHP programını yazalım.
Aşağıdaki kodları formlar03_isle.php adıyla kaydedelim:
Kod Alanı: | |
|
Demiştik ki, Web sunucu, bir istemci Browserdan 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, Formun 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 ):
Kod Alanı: | |
|
ş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.