Dreamweaver ile Üyelik Sistemi - Üyelere Özel Sayfa ve İfadeler
Bu makale dizisi ile Dreamweaver kullanarak sitemiz için bir üyelik sistemini nasıl yapacağımızı inceleyeceğiz. Üyelere özel sayfaları veya sadece üyelerin görebileceği bir objeyi nasıl giriş yapmamış kullanıcılardan gizleyeceğimizi bu makalede inceleyeceğiz
Üyelik sisteminin beklide en önemli amaçlarından biri olan "üyelere özel" imkanları veya içerikleri sunmaktır. Bu işlemi yapmak için; üyenin giriş yapıp yapmadığını kontrol etmeliyiz. Dreamweaver bu işlemi bizim için oldukça kolaylaştırıyor.
Bu tür uygulamaların mantığını kavrayabilmemiz için DW ile yapılan üyelik sistemlerinde DW'ın üye giriş işlemi sırasında nasıl bir prosedür izlediğini bilmemiz gerekiyor. DW tarafından hazırlanan üye girişi (login) sayfalarında giriş işlemi sırasında bir oturum açılmakta ve üyenin kullanıcı adı "MM_Username" adında bir oturum değişkenine atanır. Eğer üye yetkilerinin de söz konusu olduğu bir oturum açma işlemi yaptıysak yani üyelik sistemimiz yetki bazlı ise aynı şekilde giriş yapan üyenin veritabanındaki yetki bilgisi "MM_UserGroup" adlı başka bir değişkene atanır.
Bu bilgiler ışığında oturum bilgilerini kontrol ederek üyenin giriş yapıp yapmadığını tespit edebiliriz.
Üyelere özel sayfalar yapmak
Bu işlem için sadece üyelerin görmesi gereken PHP dokümanını açıyoruz. Burada bazı arkadaşların aklında "HTML dokümanları içinde bu işlemi yapabilir miyiz?" sorusu belirebilir. Bu sorunun cevabı maalesef "hayır" arkadaşlar. Sadece aktif sunucu modeli dilleri ile hazırlanmış sayfalarda yetki kısıtlaması yapabiliyoruz.
Doküman DW içersinde açık iken eğer açık değilse Windows / Server Behaviors menüsü ile "Server Behaviors" panelini açıyoruz. (+) işaretine tıklayarak açılan menüden "User Authentication / Restrict Access To Page" seçeneğine tıklıyoruz.
Açılan iletişim penceresinden ilgili ayarları yapabilirsiniz. Giriş yapmayan kullanıcıların yönlendirileceği sayfanın adresini-yolunu "If access denied, go to" kısmına girmelisiniz. Bu kısma üyelerin giriş yapabileceği "login.php" sayfasının adresini yazarak kullanıcının giriş yapmasını da sağlayabilirsiniz.
Eğer yetki bazlı bir kontrol yaptırmak istiyorsanız "Restrict access based on" bölümünden "Username, password and Access level" seçeneğini seçmelisiniz. "Define" düğmesine tıklayarak sitemiz için kullanmayı düşündüğümüz yeki türlerini belirleyebiliriz.
Yetkileri tanımladıktan sonra yetki kısıtlaması iletişim penceresinde hangi yetkiye sahip üyelerin sayfayı görmesini istiyorsanız onları "CTRL" tuşuna basılı tutarak seçebilirsiniz.
İşlemleri tamamladıktan sonra "OK" diyerek yetki kısıtlamasını sayfaya ekleyebiliriz. Peki, tüm sayfada değil de sayfanın belli bir kısmının üyeler tarafından görünmesini istiyorsak ne yapacağız? Makalenin devamında bu sorunun cevabını bulabilirsiniz.
Bu işlemler aslında oldukça basit bir "if-else" koşulundan ibaret olaylardır. Eğer basit de olsa bir programlama geçmişiniz var ise rahatlıkla istediğiniz gibi kısıtlamalar yapabilirsiniz.
Biz bu örnekte, giriş yapmamış kullanıcılara üye giriş formunu, eğer kullanıcı giriş yapmış ise "Hoş geldin (kullanıcı adı)" şeklinde bir karşılama mesajı göstereceğiz. Şimdi ilgili dokümanı açıp "Applications" panel grubunda yer alan "Bindings" panelini açıyoruz. (+) işaretine tıklayarak açılan menüden "Session Variable" seçeneğine tıklıyoruz.
Açılan iletişim penceresinde "Name" kısmına "MM_Username" yazıyoruz ve "OK" diyoruz. Böylece ilgili oturumdan "MM_Username" isimli değişkeni sayfamızda kullanabileceğiz.
Şimdi kod görünümüne geçip sayfanın en üst kısmına şu kodu ekliyoruz.
-
<?php
-
}
-
?>
-
Ardından sayfada üyelerin giriş yapmadıkları zaman görecekleri kısmın kaynak kodunu buluyoruz. Bu tür işlemlerde nesneleri veya görünmesini-gizlenmesini istediğiniz bölümü bir tablo ya da DIV içerisine alarak sınırlarını daha kolay kestirebilirsiniz. Böylece kod görünümünde çalışmakta oldukça kolaylaşacaktır.
Bu bölümün başına gelip (biraz önce bahsettiğimiz üzere tablo ya da DIV'in başlangıcı olabilir) Aşağıdaki PHP kodunu yazıyoruz.
-
<?php if (!$_SESSION['MM_Username']) { ?>
-
Burada kod yazarken oturum değişkenini "Bindings" panelinden sürükleyerek ilgili kısma ekleyebilirsiniz, böylece kod yazarken oldukça konforlu bir biçimde değişkenleri koda dahil edebilirsiniz.
Aynı şekilde giriş yapmış üyelerin görmemesi gereken kısmın sonuna gidiyoruz (tablo yada DIV'in bitişi) aşağıdaki kodu yazıyoruz.
-
<?php } ?>
-
Böylelikle ilgili kısmı bir PHP "if" ifadesi içerisine almış olduk. Bu ifadenin koşulu olan "!$_SESSION['MM_Username']" ifadesinin başındaki ünlem işareti (!) bu değişkenin tanımlı olmaması gerektiğini veya boş olduğu durumu belirtiyor. Yani "MM_Username" isimli oturum değişkeni tanımlı değilse veya boş ise bu ifadeyi göster demiş olduk. Şimdi bu ifadenin tersi olan koşul yani üyenin giriş yaptığı durumda sayfaya bir şeyler yazdırmak istiyor isek "if" ifadesinin bittiği "}" parantezi bulup şu şekilde değiştirebiliriz.
-
<?php } else { ?>
-
Buradaki "else" ifadesi de biraz önce belirtilen koşulun yerine gelmediği durumu belirtiyor. Bu kod parçasından sonra giriş yapan üyelerin göreceği ifadeleri sayfaya ekleyebiliriz. Bu örnekte bir karşılama mesajı vereceğiz. Onun için şu kodu devamına ekliyoruz.
-
<p>Hoşgeldin, <strong><?php echo $_SESSION['MM_Username']; ?></strong>. Çıkış yapmak için <a href="logout.php">buraya tıklayınız</a>.</p>
-
Tabi her "if-else" ifadesinde bir de bitiş olmalı. Son olarak aşağıdaki kodu ekliyoruz.
-
<?php } ?>
-
Böylece sadece üyelerin görebileceği bir karşılama mesajı ve giriş yapmamış üyelerin göreceği bir üye giriş formu yapmış olduk. Kaynak kodun son hali şuna benziyor.
-
<?php if (!$_SESSION['MM_Username']) { ?>
-
<div id="GirmesmisUye">
-
<form id="uye_giris" name="uye_giris" method="post" action="login.php">
-
<table class="formtables">
-
-
...
-
</table>
-
</form>
-
<p><a href="register.php">Kayıt olmak istiyorum</a> / Şifremi unttum </p>
-
</div>
-
<?php } else { ?>
-
<p>Hoşgeldin, <strong><?php echo $_SESSION['MM_Username']; ?></strong>. Çıkış yapmak için <a href="logout.php">buraya tıklayınız</a>.</p>
-
<?php } ?>
-
ASP sunucu modeli ile çalışan arkadaşlariçin kod şu şekilde olmalı;
Bu işlemi görsel olarak yapmanıza olanak sağlayan "PHP Show If Recordset Field Condition Is True" ya da ASP sunucu modeli ile çalışanlar için "Conditional Region" isimli eklentiyi sitemiz dosya arşivinden temin etmeniz de mümkün. Fakat temel bir PHP koşullu ifadesinin nasıl olduğunu görmeniz açısından bu kod örneğini vermeyi uygun buldum.
Üyelere özel sayfa ve ifadeleri nasıl yaptığımızı öğrendik. Aynı mantık çerçevesinde kullanıcı yetkilerine özel "if-else" ifadeleri de yazabilmemiz mümkün. (Örneğin sadece yetkisi yönetici olan üyelerin görebileceği ifadeler) Tamamen sizin yaratıcılığınız ve hayal gücünüz ile sınırlı. Üyelik sistemimizde bir sonraki aşama üye profilini güncelleme sayfasının yapımı. Bir sonraki makalede görüşmek dileğiyle.
Kaynak www.dw.gen.tr/