ÜNİTE
9
Form ve Oturum İşlemleri
İNTERNET
PROGRAMCILIĞI - I Uzm. Gökhan TUTAR
İÇ İN DE KİL ER • Form ve Oturum İşlemleri
• Form Elementleri
• Form elementlerindeki verilerin işlenmesi
• Oturum İşlemleri
HED EF LER
•Bu üniteyi çalıştıktan sonra;
•Form oluşturarak girilen verileri işleyebilecek,
•Login sayfası oluşturarak sadece yetkili kişilerin o sayfaya
erişmesini sağlayabileceksiniz.
ÜNİTE
9
GİRİŞ
Bu ünitede form işlemleri ile oturum işlemlerinin nasıl yapılacağı anlatılacaktır.
Ünite içerisinde yer alan örnek kod gösteriminde notepad++ editörü kullanılmıştır.
FORM VE ELEMENTLERİ
Programlamada kullanıcıdan bilgi almada çalışacak program ihtiyacı çok azdır. Genellikle kullanıcılardan bilgi girişi istenir ve girilen o bilgiler işlenerek işlem yapılır. Bu bilgi girişi internet tabanlı programlamada genellikle form ve
elementleri ile oluşur. Form ve elementleri html elementleridir.
Kullanım şekli: <form action=”adres” method=”metot”>elementler<form>
Resim 9.1: Form
Form elementinin parametrelerinden olan “method” genel olarak iki değer alabilir. Bunlar:
GET:
Eğer formun method kısmına bu değer yazılırsa formda gönderilen bilgiler tarayıcının adres çubuğunda gözünür ve en fazla 255 karakter verigönderilebilir. Gönderilen bilgiler göründüğü için POST metoduna göre biraz daha güvensiz ancak daha hızlıdır.
POST:
Eğer formun method kısmına bu değer yazılırsa formdakigönderilen bilgiler tarayıcının adres çubuğunda görünmez ve sunucu ayarına göre sınırsız boyutta veri gönderilebilir. GET metoduna göre biraz daha güvenli, ancak daha yavaştır.
Kullanıcının veri gönderebilmesi için kullanılan html elementlerine” form elementleri” denir. Bu elementlerin kullanıcıların daha kolay veri gönderebilmesi için birçok türü vardır.
Bunlardan bazıları:
Tablo 9.1: Form elementleri tür açıklama
text Kısa metin girişi için password Şifre girişi için
submit Form verilerinin gönderilmesi için kullanılan buton
textarea Uzun metin girişi için
Form elementlerinin kullanım şekli textarea haricinde aynıdır. Bu elementlerin varsayılan değerinin kullanımı zorunlu değildir.
GET metodu ile en fazla 255 karakter veri
gönderilebilir.
POST metodunda ise sunucu ayarına göre
sınırsız veri gönderilebilir.
Kullanım şekli: <input type=”tür” name=”nesne adı” value=”değer”/>
Textarea kullanım şekli: <textarea name=”adı”> değer </textarea>
Resim 9.2: Form elementleri
FORM ELEMENTLERİNDEKİ VERİLERİN İŞLENMESİ
Daha önceki örneklerimizde bazı form elementlerinin kullanım şekli gösterilmiştir. Şimdi de bu form elementlerine girilen değerlerin PHP tarafından nasıl işleneceğini görelim.
Formdaki elementin değerini almak PHP’de “$_GET” ve “$_POST” global değişkenleri kullanılır ve bu global değişkenler dizi yapısındadır.
Kullanım şekli: $_GET[input’un name özelliğinde yazılan ad]
$_POST[input’un name özelliğinde yazılan ad]
Bir formun içerine “text” alanı ekleyerek “GET” metodu ile girilen bu değeri ekrana yazdıralım. Bu örnek için önce “form.php” dosyası oluşturalım.
Resim 9.3: Form elementleri
Yukarıdaki örnekte “yazi” adından bir text alanı oluşturulmuştur. “Gönder”
butonuna tıklanınca doldurulan bilgileri “islem.php” dosyasına gönderilecektir. Bu örnekte dikkat edilmesi gereken kısım formun “method” özelliğine “get”
yazılmasıdır. Bu özelliği “get” olarak ayarladığımız için gönderdiğimiz veriler adres çubuğunda görünecektir.
Resim 9.4: Form elementleri
Yukarıdaki örnek formda “name” özelliği “yazi” olanın içeriğini ekrana yazdırdık. Formda doldurduğumuz “yazi” inputunun değeri adres çubuğunda görünmektedir. Oluşturulan formun metodu “get” olduğu zaman PHP’de gönderilen veriyi alırken “$_GET” global değişkeni kullanılır.
$_GET ve $_POST, global değişkenlerdir.
Yukarıdaki örneği bu defa da “post” metodu ile yapalım:
Resim 9.5: Form elementleri
Formumuzu oluşturduk. Bu sefer “method” kısmına “get” yerine “post”
yazdık.
Resim 9.6: Form elementleri
Aynı işlemleri “post” metodu ile yaptığımızda gönderilen veri adres çubuğunda görünmez. Oluşturulan formun metodu “post” olduğu zaman PHP’de gönderilen veriyi alırken “$_POST” global değişkeni kullanılır.
OTURUM İŞLEMLERİ
Bir değişkene değer atadığımızda bu değer o sayfa için geçerlidir. Bu değişkeni başka sayfada kullanamayız. Bir sayfada tanımlanan değişkeni başka bir sayfada kullanmak için “$_SESSION” global değişkeni kullanılır. Bu değişken dizi yapısındadır. Bu global değişkeni tanımlamadan veya çağırmadan önce
session_start() fonksiyonunun kullanımı zorunludur.
Resim 9.7: Oturum işlemleri
Yukarıdaki örnekte “$uye_adi” adlı değişkene “Ahmet” değeri vererek tanımladık ve bu dosyayı “tanimla.php” adı ile kaydettik. Bu dosyada
tanımladığımız değişkeni “getir.php” adındaki dosyadan çağırmayı deneyeceğiz.
Resim 9.8: Oturum işlemleri
Yukarıdaki örnekte de görülebileceği gibi sıradan değişkenler bir sayfada tanımlandığında başka sayfadan çağırılamaz. Fakat “$_SESSION” global değişkeni bu işlemi yapabilmektedir.
$_SESSION değişkeni tanımlandıktan sonra
farklı sayfalar da çağrılabilir.
Resim 9.9: Oturum işlemleri
Yukarıdaki örnekte önce sesion_start() fonksiyonu ile bu sayfada
“$_SESSION” global değişkeni ile işlem yapacağımızı belirtik ve “$_SESSION”
değişkenini tıpkı dizilerde olduğu gibi index vererek tanımladık. Bu sayfayı
“tanımla.php” olarak kaydettik. Şimdi de bu sayfada tanımladığımız değişkeni
“getir.php” adından sayfa oluşturarak ekrana yazdıralım:
Resim 9.10: Oturum işlemleri
Yukarıdaki örnekte de görülebileceği gibi “tanımla.php” de oluşturduğumuz bir değeri daha sonra “getir.php” sayfasında ekrana yazdırdık.
PHP bu işlemi gerçekleştirmek için önce tarayıcımıza eşsiz bir değer gönderir ve sunucumuz da bu değer adında bir dosya oluşturur. Biz “$_SESSION”
değişkenine değer atadığımızda bilgiler bu dosyaya kaydedilir. Kişinin tarayıcısında bu essiz değer varsa PHP o dosyadaki değeri bize verir biz de istediğimiz işlemleri gerçekleştirebiliriz.
“$_SESSION” değişkeninin en fazla kullanım amacı, sayfalarımızı sadece bizim belirlediğimiz kullanıcıların ziyaret edebilmesini sağlamaktır. Bu işlemi yapmadan önce isset() fonksiyonunun kullanımını anlatılacaktır. Bu fonksiyon eğer değişken tanımlandı ise doğru “true”, tanımlanmadı ise yanlış “false” yanıtını döndürür.
Kullanım şekli: isset(değişken)
Resim 9.11: Oturum işlemleri
Yukarıdaki örnekte “$_SESSION[“isim”]” değişkeni daha önce
tanımlanmadığı için isset() fonksiyonu yanlış “false” yanıtını döndürdü. Şimdi de
“$_SESSION[“isim”]” adındaki değişken tanımlayıp bu işlemi tekrar yapalım:
isset() fonksiyonu değişkenin tanımlanıp
tanımlanmadığını kontrol eder.
Resim 9.12: Oturum işlemleri
Yukarıdaki örnekte “$_SESSION[“isim”]” adlı değişken tanımlandığı için isset fonksiyonu doğru “true” yanıtını döndürdü.
Yukarda gösterilen işlemleri kullanarak bir sayfamızdaki verileri, sadece
“$_SESSION[“isim”]” değişkeni tanımlanmışsa ekrana “Giriş başarılı”, tanımlanmamışsa “Giriş başarısız” yazdıralım:
Resim 9.13: Oturum işlemleri
Yukarıdaki örnekte “Giriş başarılı” yazmasının nedeni, daha önceden
“$_SESSION[“isim”]” adlı değişkeni tanımlamamızdır. Hiçbir kod değiştirmeden sayfayı ya farklı bir tarayıcıda veya tarayıcı geçmişini silerek yenileyelim:
Resim 9.14: Oturum işlemleri
Tarayıcımızın geçmişini sildikten sonra sayfayı yenilediğimizde ekranda
“Giriş başarısız” yazdığı görülmektedir.
Şimdiye kadar yaptığımız işlemleri birleştirerek önce bir form oluşturalım.
Bu formda kullanıcı,adını ve şifresini girsin. Eğer adı alanına “Ahmet”, şifre alanına da “123” yazarsa “islem.php” sayfasında “Hoşgeldin Ahmet”, farklı bilgiler yazarsa da “Yetkiniz yoktur” mesajı ekrana gelsin.
İlk olarak formu oluşturalım ve “login.php” adıyla kaydedelim:
Resim 9.15: Oturum işlemleri
Yukarıdaki örnekte bir tane “text” tipinde kullanıcı adını yazmak, bir tane de
“password” tipinde şifre yazmak için iki tane veri alanı oluşturduk.
Oluşturduğumuz formun ekran görüntüsü aşağıda verilmiştir:
Resim 9.16: Oturum işlemleri
Şimdi de sadece bizim belirlediğimiz kişilerin görebileceği sayfayı oluşturalım.
Resim 9.17: Oturum işlemleri
Yukarıdaki örnekte “login.php” sayfasından gelen “$_POST[“isim”]”
değişkeni “Ahmet” ve “$_POST[“sifre”]” değişkeni “123” ise girilen bilgileri
“$_SESSION” değişkenine atandı ve ekrana “Hoşgeldin Ahmet”, değilse ekrana
“Yetkiniz yoktur” yazıldı.
Formumuzda “Kullanıcı Adı” kısmına “Mehmet”, “Sifre” kısmına da “123”
yazarak “Gönder” butonuna tıklayalım:
Resim 9.18: Oturum işlemleri
Kullanıcı adına “Ahmet” yerine “Mehmet” yazdığımız için ekran görüntüsü aşağıdaki gibi olur:
Resim 9.19: Oturum işlemleri
Formumuzda “Kullanıcı Adı” kısmına “Ahmet”, “Sifre” kısmına da “123”
yazarak “Gönder” butonuna tıkladığımızda ekran görüntüsü aşağıdaki gibi olacaktır:
Resim 9.20: Oturum işlemleri
Yukarıdaki örnekte kullanıcı adı ve şifre bilgileri istediğimiz şekilde girildiği için ekrana “Hoş geldin Ahmet” yazıldı.
Kullanıcı grupları oluşturarak farklı kullanıcıları farklı sayfalara yetkilendirme yapabiliriz.
Bu örneğimizde “ahmet.php”, “mehmet.php”, “diger.php” dosyaları
oluşturalım. Ahmet kullanıcısı “ahmet.php”, Mehmet kullanıcısı ise “mehmet.php”
dosyasının içeriğini görebilsin. Formu dolduran herhangi bir kişi (Ahmet ve Mehmet dâhil) “diger.php” dosyasının içeriğini görebilsin.
Aşağıdaki işlemleri gerçekleştirmeden önce tarayıcınızın geçmişini silmeyi unutmayınız.
Kişilerin adlarını girebilmesi için “login.php” dosyasını oluşturarak içerisine aşağıdaki kodları yazalım:
Resim 9.21: Oturum işlemleri
Kullanıcının girdiği bilgiyi “$_SESSION” değişkenimize atayalım ve oluşturacağımız sayfalara kolay erişim sağlamak için link verelim:
Resim 9.22: Oturum işlemleri
Yukarıdaki örnekte formdan gelen veriyi $_SESSION değişkenine atadık ve ekrana “Hoşgeldin ” formdan gelecek isim yazdırdık. Kullanıcı adına “Ahmet” yazıp
“Gönder” butonuna tıklayınca aşağıdaki ekran görüntüsü oluşacaktır:
Resim 9.23: Oturum işlemleri
Yukarıdaki örnekte “Ahmet”, “Mehmet” veya “Diğer” yazılarının üzerine tıklanınca sayfalar hata verecektir. Çünkü henüz o sayfaları oluşturmadık. Şimdi
“ahmet.php” sayfasını oluşturalım:
Resim 9.24: Oturum işlemleri
Yukarıdaki örnekte eğer önceki formda kullanıcı adı olarak “Ahmet”
yazılmışsa ekrana “Yetkiniz var”, farklı bir şey yazılmışsa “Bu sayfayı sadece Ahmet görebilir” yazısı gelecek. Kullanıcı adı kısmına daha önceden “Ahmet” yazdığı için ekran görüntüsü aşağıdaki gibi olacaktır.
Resim 9.25: Oturum işlemleri Şimdi de “mehmet.php” adlı sayfanın kodlarını yazalım:
Resim 9.26: Oturum işlemleri
Yukarıdaki örnekte eğer önceki formda kullanıcı adı olarak “Mehmet”
yazılmışsa ekrana “Yetkiniz var”, farklı bir şey yazılmışsa “Bu sayfayı sadece Mehmet görebilir” yazısı gelecek. Kullanıcı adı kısmına daha önceden “Ahmet”
yazıldığı için ekran görüntüsü aşağıdaki gibi olacaktır:
Resim 9.27: Oturum işlemleri Şimdi de “diger.php” adlı sayfanın kodlarını yazalım:
Resim 9.28: Oturum işlemleri
Yukarıdaki örnekte eğer önceki formda kullanıcı adı olarak “Ahmet”
yazılmışsa ekrana “Merhaba Ahmet”, “Mehmet” yazılmışsa “Merhaba Mehmet”
veya farklı bir isim yazılmışsa “Merhaba” formda yazılan isim yazacaktır. Ancak form doldurulmadan direkt bu sayfaya erişmek isteyen kişinin ekranında “Formu”
doldurunuz yazacaktır. Biz daha önceden kullanıcı adı kısmına daha önceden
“Ahmet” yazıldığımız için ekran görüntüsü aşağıdaki gibi olacaktır:
Resim 9.29: Oturum işlemleri
Son olarak “$_SESSION” değişkeninde bulunan bütün değerleri silmek için session_destroy() fonksiyonu kullanılır. Genel olarak kullanıcı çıkış yapmak istediğinde bu fonksiyonu kullanılır ki kişinin oturumu kapatılsın.
Kullanım şekli: session_destroy()
Resim 9.30: Oturum işlemleri
Öz et
•GET: Eğer formun method kısmına bu değer yazılırsa formdaki gönderilen bilgiler tarayıcının adres çubuğunda görünür ve en fazla 255 karakter veri gönderilebilir.
Gönderilen bilgiler göründüğü için POST methoduna göre biraz daha güvensiz, ancak daha hızlıdır.
•POST: Eğer formun method kısmına bu değer yazılırsa formdaki gönderilen bilgiler tarayıcının adres çubuğunda görünmez ve sunucu ayarına göre sınırsız boyutta veri gönderilebilir. GET methoduna göre biraz daha güvenli ,ancak daha yavaştır.
•$_SESSION değişkeni tanımlandıktan sonra farklı sayfalar da çağrılabilir.
Öd ev
•Farklı sayfalar oluşturarak bu sayfalara farklı kişiler yetkilendirin ve bu kişilerin login yapabilmesi için form oluşturun.•Hazırladığınız ödevi sistemde ilgili ünite başlığı altında yer alan
“Ödev” bölümüne yükleyebilirsiniz.
DEĞERLENDİRME SORULARI
1. Aşağıdakilerden hangisi “get” metodu hakkında doğrudur?
a) “post” metoduna göre daha hızlıdır.
b) Sınırsız boyutta veri gönderilebilir.
c) “post” metoduna göre daha güvenlidir.
d) “post” metoduna göre daha yavaştır.
e) En fazla 552 karakter veri gönderebilir.
2. Aşağıdakilerden hangisi “post” metodu hakkında doğrudur?
a) “get” metoduna göre daha hızlıdır.
b) En az 255 karakter veri gönderilir.
c) “get” metoduna göre daha güvensizdir.
d) “get” metoduna göre daha yavaştır.
e) En fazla 552 karakter veri gönderebilir.
3. Aşağıdakilerden hangisinde $_GET, $_POST, $_SESSION değişkenlerinin ortak özelliği verilmiştir?
a) Bir sayfa da tanımlandığında farklı sayfalarda da kullanılabilir.
b) Global değişkenlerdir.
c) En fazla 255 karakter veri barındırabilirler.
d) Kullanıcının bilgisayarında oluşturulurlar.
e) Dizi yapısında değillerdir.
4. $_SESSION değişkenini kullanmadan önce çalıştırılacak fonksiyon aşağıdakilerden hangisidir?
a) baslat_session() b) start_session() c) reset_session() d) get_session() e) stop_session()
5. Aşağıdakilerden hangisi $_SESSION değişkeni hakkında doğrudur?
a) Bir sayfada tanımlandıktan sonra farklı sayfalar da çağrılabilir.
b) En az 255 karakter veri depolayabilir.
c) Sadece tanımlandığı sayfada kullanılabilir.
d) Dizi yapısında kullanılamaz.
e) Global değişken değillerdir.
Değerlendirme sorularını sistemde ilgili ünite başlığı altında yer
alan “Bölüm Sonu Testi” bölümünde etkileşimli olarak cevaplayabilirsiniz.
6. Aşağıdakilerden hangisi isset() fonksiyonunun kullanım amacıdır?
a) $_SESSION değişkenini silmek için b) $_GET değişkenini kullanmak için
c) Bir değişkenin tanımlanıp tanımlanmadığını öğrenmek için d) Dizinin ilk elemanını alabilmek için
e) Oturum açmak için
7. Oturum açma işlemi yapılırken neden form “method” una “get” yazılması tavsiye edilmez?
a) Veriler çok uzun olabileceği için
b) Gönderilen veriler adres çubuğunda göründüğü için c) Bu işlem gerçekleştirilemediği için
d) Çok fazla işlemci kullanıldığı için e) Çok fazla ram kullanıldığı için
8. Kullanıcıların şifre girmesi için oluşturulacak input un “type” özelliğine ne yazılır?
a) textarea b) text c) button d) password e) sifre
9. Kullanıcıların kısa metin girebilmesi için oluşturulacak input un “type”
özelliğine ne yazılır?
a) textarea b) text c) button d) password e) kisa_yazi
10. Aşağıdaki fonksiyonlardan hangisi $_SESSION değişkeninde bulunan bütün verileri silmek için kullanılır?
a) selete() b) session_sil() c) sil_session() d) session_destroy() e) destroy_session()
YARARLANILAN VE BAŞVURULABİLECEK DİĞER KAYNAKLAR
Tatros, K. MacIntyre, P. Lerdorf, R. (2013). Programming PHP, O’Reilly Media.
Forbes, A. (2013). The Joy of PHP: A Beginner's Guide to Programming Interactive Web Applications with PHP and mySQL, Paperback.
Welling, L., Thomson, L. (2009). PHP and MySQL Web Development (4th Edition), Pearson Education.
Powers, D. (2010). PHP Solutions: Dynamic Web Design Made Easy, Apress.