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:



Kod Alanı:

<HTML>



<HEAD>



<TITLE>PHPde Formlar</TITLE>



<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">



<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">



</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 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ı:

http://server/formlar02_isle.php?adi=Yigit+Bilginsavasci&adres=bilgi@hanci.org




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ı:

<HTML>



<HEAD>



<TITLE>PHPde Formlar</TITLE>



<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">



<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">



</HEAD>



<BODY>



<?php



print ("Sayın <b>$adi</b>\n\n" );



print ("<p>Elektronik adresiniz: <b>$adres </b></p>\n\n" );



?>



</BODY>



</HTML>






Ş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ı:

<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 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ı:

<HTML>



<HEAD>



<TITLE>PHPde Formlar</TITLE>



<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">



<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">



</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 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ı:

adi=hanci+org&adres=bilgi@hanci.org&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.



Hanci.org sizlere daha iyi hizmet sunmak için çerezleri kullanıyor.
Hanci.org sitesini kullanarak çerez politikamızı kabul etmiş olacaksınız.
Detaylı bilgi almak için Gizlilik ve Çerez Politikası metnimizi inceleyebilirsiniz.