Veri Aktarımı - İsmail KIRBAŞ ile Web Sitesi Tasarımı
İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa]
 Site Haritası 
 
Site Map
Ana SayfaYeriniz | Ana Sayfa | Makaleler | Programcılık | PHP | Veri Aktarımı

Diğer Yazılar
Yapı Taşları
PHP de Dosya İşlemleri
PHP de Metin Düzenleme İşlemleri
Operatörler
Fonksiyonlar
Sekmeli Menü 1
Sekmeli Menü 2
Hızlı RSS Hazırlama
Web Formları İçin Güvenlik Kodu Oluşturma
PHP ye Giriş
PHP ye Giriş 2
Php ile COM Port Kontrolü
Kaya Sağlamlığında Kodlama


E-posta Gönderin Yorum Yazın
Güvenlik Kodu:4773Güvenlik Kodu:4773Güvenlik Kodu:4773Güvenlik Kodu:4773




En Son Okunan 10 Makale
  1. Renklerin Dili - Pembe
  2. Nasıl Bir Yöneticisiniz?
  3. Programlamanın Taosu
  4. Fotoğraf Çekim Teknikleri
  5. AJAX a Giriş
  6. Özgeçmişinizi Geliştirmenin 15 Yolu
  7. Programcılık
  8. Dünden Bugüne Türkiye’de Reklam’ın Tarihi
  9. E-iş Terminoloji Sözlüğü
  10. İndirin
 
Veri Aktarımı>
Yazı Tipi KüçültYazı Tipi BüyütAna SayfaYazıcıdan ÇıkarPDF Belgesi Olarak GörüntüleFavorilerime EkleArkadaşıma Tavsiye EdeceğimRTF (Word Dokümanı) olarak görüntüle

Dış Kaynaklı Veriler

PHP genel olarak dört farklı şekilde dışardan veri alabilir:
  • Tarayıcının adres satırından
  • Form'lardan
  • Cokie (çerez)'lerden
  • Session (oturum) değişkeninden

PHP, kaynağı nereden olursa olsun tüm bu verileri kendi içerisinde doğrudan $degisken="degeri" şeklinde kullanabilir. Şimdi sırasıyla bu dört dış kaynağın üzerinde duralım. Sayfa başına geri dön..

Adres Satırından Gelen Parametreler

Tarayıcının adres satırından PHP programımıza iletilmek istenen değişkenler (parametreler) dosya adından sonra soru işareti ( ? ) ve degisken_ismi=degeri olacak şekilde yazılır. Eğer birden fazla değişken aktarılmak isteniyorsa bu isim-değer ikililerinin arasına ve ( ampersand, & ) işareti eklenmelidir.

Örnek:

Aşağıdaki kodu out2.php olarak kaydedelim ve tarayıcımızdan çağıralım.

print   "Adı: ".$ad."
"
        
."Soyadı: ".$soyad."";
?>

Sayfayı doğrudan çağırınca ad ve soyad değişkenlerinin içi boş olduğundan ekrana yazdırılmadı. Şimdi aynı dosyayı tarayıcının adres satırından
out2.php?ad=Cihan&soyad=Turfanda yazarak çağıralım.

Görüldüğü üzere adres satırından parametre olarak verdiğimizi degisken=degeri şeklindeki ikililer PHP tarafından rahatlıkla kullanılabilmektedir.

Aslında PHP'nin adres satırından veri alması az sonra değindiğimizde de anlaşılacağı üzere Form'lardan GET methodu ile veri alması konusuna girer.

Örnek:

Adres satırından elle parametre vermek pratikte pek kullanılmaz. Daha çok sayfadaki bağlantılar üzerinden adres satırından parametre aktarma işlemi yapılır. Mesela bir alışveriş sitesi için ürünlerin sıralandığı bir tablo oluşturduğumuzu varsayalım. Tabloda genelde kısa bilgiler ve ürünün fiyatı verilir. Ürünle alakalı resim, uzun açıklama vb. diğer bilgiler çok yer kaplayacağı için bunların gösterildiği başka bir sayfa olmalıdır. Elbetteki her ürün için bir sayfa yapılmayacaktır (yoksa boş yere PHP öğrenmiş oluruz). Ürünle alakalı ayrıntılı bilgilerin gösterileceği sayfa, parametre olarak ürünle alakalı benzeri olmayan bir değerini (mesela seri no yada yine tarafımızdan her ürüne verilecek olan özel bir kimlik numarası) kullanmalıdır. Tablodaki ürün satırlarını oluştururken bir yada birden fazla hücredeki veriyi bir bağlantı şeklinde oluşturmalı ve bu bağlantı o satırdaki ürünle alakalı parametre olacak değeri de uygun bir şekilde içermelidir. Bağlantıya tıklandığında ayrıntıların görüntüleneceği php sayfası ilgili parametre ile çağrılacak ve bu sayede ürünlerin tutulduğu dosya ya da veritabanından ilgili kayıt çekilecektir.

Örneği fazla genişletmeden tablo kısmına geri dönelim. Sözünü ettiğimiz tablo aşağıdaki şekilde hazırlanabilir.

$urun[isim][]="120 Yaprak Defter";
$urun[isim][]="200 Yaprak Defter";
$urun[isim][]="Kurşun Kalem";
$urun[isim][]="Tükenmez Kalem";

$urun[fiyat][]=500000;
$urun[fiyat][]=900000;
$urun[fiyat][]=200000;
$urun[fiyat][]=750000;

$urun[serino][]="abc123";
$urun[serino][]="3gf345";
$urun[serino][]="733kja";
$urun[serino][]="a5s6d8";

print   
" n"
        ." n"
        
." "
        
."n"
        
." n"
        
." "
        
." "
        
." "
        
."n";

for (
$i=0;$i<sizeof ($urun[isim]);$i++)
{
    if (
$i%2==0)
        
$zemin="white";
    else
        
$zemin="#eeeeee";

    print   
" "
            
." "
            
." "
            
." ";
}

print   
"
ÜRÜNLER
Sıra NoÜrün AdıFiyat
".$i.""
            ."            .$urun[serino][$i]."">"
            
.$urun[isim][$i]."
".
            
"
"
            .number_format($urun[fiyat][$i])
            .
" TL
";

?>


Bu kodun çıktısı:

ÜRÜNLER
Sıra No Ürün Adı Fiyat
0 120 Yaprak Defter 500,000 TL
1 200 Yaprak Defter 900,000 TL
2 Kurşun Kalem 200,000 TL
3 Tükenmez Kalem 750,000 TL

Sayfa başına geri dön..

Formlar

Biliyoruz ki HTML'in en önemli unsurlarından biri FORM'lardır. Formlar sayesinde normalden farklı olarak ziyaretçiden web sunucusuna bilgi aktarımı sağlanabilir. Bu bilgiler web sunucusu üzerinde çalışan CGI programları ya da bizim hazırladığımız gibi PHP (ya da ASP, JSP) programları ile işlenir.

Bütün web sunucu programları ortak bazı önemli değişkenlere sahiptir. Bu sunucu değişkenleri PHP'de tanımlıdır ve rahatlıkla erişilebilir. (Sunucu değişkenlerinin tam listesi için phpinfo fonksiyonunun çıktısını inceleyebilirsiniz). Bu değişkenlerden bazıları:

HTTP_GET_VARS: Bir Form'dan GET yöntemiyle alınan bilgilerin degisken_ismi=degeri şeklinde tutulduğu dizi değişken.
HTTP_POST_VARS: Bir Form'dan POST yöntemiyle alınan bilgilerin degisken_ismi=degeri şeklinde tutulduğu dizi değişken.
QUERY_STRING: Form ile bilgi alırken GET yöntemi kullanıldığı takdirde adres satırından aktarılan bilgilerin tutulduğu değişken. (Aynı şekilde adres satırından kendimiz parametre olarak değer verdiğimizde de GET ile bilgi aktarılıyormuş gibi olur.)
REMOTE_ADDR: Ziyaretçinin IP adresi.
SERVER_ADDR: Sunucunun IP adresi.

Bilindiği üzere Form'lar web sunucuna iki farklı yöntemle (method) veri aktarabilir: GET veya POST.

GET yöntemi ile formlardan bilgi aktarımı

Bir HTML formundan GET yöntemi ile veri aktarımı yapılıyorsa bu bilgiler URL-Encoding denen bir sistemle kodlanıp tarayıcının adres satırına yazılır ve sunucuya iletilir. Bu bilgiler sunucuda HTTP_GET_VARS ve QUERY_STRING değişkenlerinde tutulur. Daha önce de değindiğimiz gibi PHP, formdan gelen bu bilgilere hem bu değişkenler üzerinden hem de doğrudan ( $degisken_ismi şeklinde ) erişebilir.

Örnek:

İçinde form olan bir HTML sayfası hazırlayalım ve form1.html olarak kaydedelim. Formun action değerini formisle1.php olarak belirtelim. Daha sonra da yazacağımız formisle1.php adlı PHP programı ile form sayfasından gelen verileri alalım ve işleyelim. Diğer örneklerimizden farklı olarak bu kez php programımızı tam bir web sayfası üretecek şekilde gerekli tüm HTML etiketleri ile birlikte hazırlayacağız.




    


    

Get Yöntemi


    

    

    Dersin Adı:
    
    1.Sınav Notu:
    
    2.Sınav Notu:
    
    
    

    






    


    

Verilerin İşlenmesi


//formisle1.php

$ort=($s1+$s2)/2;

print 
"Dersin Adı: "$dersAdi."
"
;
print 
"1.Sınav Notu: ".$s1."
"
;
print 
"2.Sınav Notu: ".$s2."

"
;
print 
"Ortalama: ".$ort."
"
;

?>



Aşağıdaki ekran çıktılarında da görüldüğü gibi formumuzun olduğu sayfayı çağırdık ve bilgileri doldurduktan sonra formu gönderdik. Sunucuya ulaşan verileri işlemesi için hazırladığımız formisle1.php adlı programımız da gerekli işlemleri yaparak gayet düzgün bir HTML sayfası olarak çıktı üretmiş; web sunucusu da bu çıktıları ziyaretçiye göndermiştir.


Sonuçların görüntülendiği sayfanın adres satırına bakacak olursak GET yöntemi ile gönderilen bilgilerin adres satırı üzerinden aktarıldığını görebiliyoruz.

POST yöntemi ile formlardan bilgi aktarımı

Bir HTML formundan POST yöntemi ile aktarılan veriler sunucuda HTTP_POST_VARS dizi değişkeninde tutulur. GET ile POST yöntemleri arasında şöyle bir fark vardır: GET ile gönderilen bilgilerin miktarı sunucu ayarları ile sınırldır. Ama POST ile gönderilen bilgilerin sınırı sunucu makinenin disk kapasitesine bağlıdır. Mesela formumuzdaki bilgi alanları çok fazla ise yada form üzerinden sunucuya bir dosya yüklemek (upload) istediğimizde mutlaka POST metodunu kullanmalıyız.

POST yöntemi ile gelen verilerin işlenmesinde PHP açısından bir fark yoktur. Yukardaki örneği POST yoluyla deneyerek bunu görebiliriz. Sayfa başına geri dön..

Cookie'ler (Çerezler)

Cookie'ler yani çerezler ziyaretçinin bilgisayarında oluşturulan ve ziyaretçi hakkında bazı bilgileri tutmamızı sağlayan text dosyalardır. Çerezler ancak ziyaretçinin tarayıcı programı buna izin verirse (ki bu izni ziyaretçi belirler) bırakılabilir. Pek tabidir ki ziyaretçi istediği anda bu text dosyaları silebilir.

Çerezler sayesinde mesela ziyaretçinin daha önce sitemize gelip gelmediğini, siteye üye olup olmadığını, site girişlerinde parola sorgulaması isteyip istemediğini tutup bu değerlere göre programımızın davranışını ayarlayabiliriz.

Çerez oluşturmak için setcookie() fonksiyonu kullanılır. Genel yazım şekli:

setcookie("cerez_ismi","çerezde saklanacak veri",time()+zaman)


Çerez ismi daha sonra bu çerezi çağırırken kullanacağımız değişken adıdır. Örneğin "cerez1" ismi ile saklanan çerez, $cerez1 olarak PHP programımıza aktarılacaktır. setcookie foksiyonunun üçüncü parametresi olan time()+zaman ifadesinde time() şu andaki zaman bilgisini Unix Epoch biçiminde döndüren bir fonksiyondur, bu bir tamsayıdır. Bu tamsayıyla toplanacak "zaman" ifadesi, saniye cinsinden çerezimizin ömrünü belirten bir tamsayı değer olmalıdır. Mesela bir saat sonra otomatik olarak silinmesini istediğimiz bir çerez bırakmak istiyorsak time()+3600 dememiz gerekir.

PHP ile çerez bırakabildiğimiz gibi Javascript, ASP, JSP ya da başka tekniklerle de çerez bırakılabilir. Fakat her teknik ancak kendi çerezini tanır.


PHP programımızda daha önceden bıraktımız bir çerezin halen var olup olmadığını test etmek için özel bir fonksiyona gerek yoktur. Çünkü çerezler de birer PHP değişkeni olarak işlem görür. Bir değişkenin değerinin olup olmadığını test eden isset() fonksiyonu ile testimizi rahatlıkla yapabiliriz. Çerez isimlerini program içerisinde sürekli kullandığımız değişken isimlerinden farklı yapmamız bizim için kolaylık sağlayacaktır. Aksi halde farkına varmadan aynı isimleri kullanıp program içerisinde hata yapmamıza neden olabilriz.

setcookie("crzUyeAdi","Cihan Avcılar",time+3600*24);    //Bir günlük bir çerez..
?>

.....

if (isset($crzUyeAdi))
    print 
"Merhaba ".$crzUyeAdi."... Seni aynı gün içinde yeniden görmek ne güzel :)) "
?>


Yeni oluşturulan bir çerez, oluşturulduğu anda oluşturulduğu sayfada farkedilemez. En az bir kere o sayfanın tekrar yüklenmesi yada çerezin okunacağı başka bir sayfa varsa onun çağrılması gerekir. Örnek içindeki çerez yazma ve okuma kısımları bunu temsil etmesi açısından ayrı ayrı gösterilmiştir.


Çerezi silmek için setcookie fonksiyonunu silmek istediğimiz değişkenin ismiyle değer ve süre belirtmeksizin kullanmak yeterlidir.

setcookie("silinecek_cerez_ismi","")

!!! PHP programımızda (çerez yazmak için yada silmek için) setcookie fonksiyonu kullanacaksak bu işlemi mutlaka ekrana herhangi bir şey yazdırmadan önce yapmak gerekir. Aksi halde program hata verecektir.

Sayfa başına geri dön..

Session'lar (Oturumlar)

Session'lar için sunucuda tutulan çerezlerdir denebilir. Şöyle ki: sessionlar sayesinde web sunucusundan istekte bulunan her ziyaretçi için sunucu makinede bir text dosya açılır. Programcının belirlediği bilgiler bu dosyaya yazılır. Ziyaretçi, sitemizden tamamen ayrılıncaya kadar (yani siteye bağlandığı aynı tür web tarayıcılarının tümünü kapatana kadar yada bir şekilde iletişimi tamamen kopana kadar) bu dosya web sunucuda muhafaza edilir. Ziyaretçi sitemizden ayrılınca sunucunun bulunduğu işletim sisteminin ayarlarına bağlı olarak eski oturum dosyası daha sonra otomatik olarak silinir (yada silinmez).

Oturum değişkeninin kullanım alanı çerezlerden farklıdır. Çerezler, ziyaretçi elle silmediği müddetçe durur ve kullanılabilir. Oturum değişkeninin ömrü ziyaretçinin siteye bağlı kaldığı müddetdir. Çerezlerin tutulduğu text dosyalar ziyaretçi makineyi kullanan herkes tarafından görülebileceği için kullanıcı parolası gibi önemli bilgileri çerezlerde tutmak doğru değildir. Ama oturum değişkenlerin tutulduğu text dosyalar sunucu makine üzerindedir ve olağanüstü şartlar olmadığı müddetçe ancak sistem yöneticileri tarafından incelenebilir.

Oturum değişkenlerinin en çok kullanıldığı yerler parola korumalı sayfaların birden fazla olduğu sitelerdir. Genelde parola koruması her sayfanın ilk başında yapılan "kullanıcı adı / parola" denetimi ile sağlanır. Bu da her sayfa çağrılışında ziyaretçiden kullanıcı adı ve parola bilgisi almak anlamına gelir ki hiç istenmeyen bir durumdur. Oturum değişkenleri sayesinde kullanıcıdan bir kere "kullanıcı adı / parola" bilgisi alınır ve oturum değişkenine yazılabilir. Korumalı her sayfanın başındaki denetimde oturum değişkeninin var olup olmadığı test edilir ve varsa denetim ziyaretçiden değil de oturum değişkenleri üzerinden yapılabilir.

Bir PHP programında session değişkeni açmak yada zaten açılmışsa bu değişkenleri kullanabilmek için o sayfada session_start() fonksiyonu kullanılmalıdır ve bu işlem ekrana herhangi bir şey yazdırılmadan önce yapılmak zorundadır (mesela sayfanın en başında bu ifade kullanılabilir). Aksi halde program hata verecektir.

Session değişkenine bir veriyi kaydetmek için genel yazım şekli şudur:

session_register("degisken_ismi")

Örnek:

session_start();

$sesUyeAdi="Şemsi Yedikedili";
$sesUyePass="laylaylom";
session_register("sesUyeAdi");
?>

......

if (isset($sesUyeAdi) and isset($sesUyePass))
    
UyeMi($sesUyeAdi,$sesUyePass)
else
    
header("Location:uyegirisi.html");
?>


Yukarıdaki örnekte header() fonksiyonu kullanılmaktadır. Bu fonksiyon ile HTTP protoküle ait başlıkları sayfamızda kullanarak çeşitli kolaylıklar sağlıyabiliriz. Örneğimizde "location" ifadesi kullanılmıştır, header() fonksiyonu "location" ifadesi ile icra edildiğinde belirtilen adresteki sayfa doğrudan çağrılmış olur. Header fonksiyonu ile ilgili daha fazla ayrıntıyı http://www.php.net/ adresinden edinebilirsiniz.

Oturum değişkeni olarak sakladığımız bir veriyi silmek istediğimizde session_unregister() fonksiyonunu kullanırız. Genel kullanım şekli:

session_unregister("silinecek_oturum_degiskeni_ismi")



Not: Yazılar konusundaki yorumlarınız için lütfen Yorum Yazın bölümümüzü kullanın.

Yazar : Hasana Civelek
Son Güncelleme : 29 Mayıs 2005, Pazar
Sayfa Sürümü : 1
Okunma Adedi : 8,804
Son Okunma : 2017-09-23 11:22:30
Kaynaklar : http://www.bthayat.net/site/yazi_goster.php?id=168

FonksiyonlarVeri AktarımıSekmeli Menü  1
© [Site Haritası]
| Makaleler | Seyir Defteri | Kaynaklar | İndirin | İletişim |

RSS dosyasını görmek için tıklayınız. RSS dosyasını görmek için tıklayınız.XML versiyonu için tıklayınız WAP versiyonu için tıklayınız Bu site DyNA İçerik Yönetim Sistemi üzerinde çalışmaktadır.
İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa
ismail kırbaş ile web sitesi tasarimi sitemap ismail kırbaş ile web sitesi tasarimi sitemap
  Sitemizde 2 kişi çevirimiçi | Bugün =79 | Dün =174 | Bu Ay=4,184 | Günlük En Fazla=1,109 tekil ziyaretçi