PHP ve MySQL ile Üyelik Sistemi – Bölüm 1

PHP ve MySQL ile Üyelik Sistemi – Bölüm 1

Merhaba arkadaşlar. Yoğunluğumdan dolayı uzun zaman yazamadım. Sizden gelen yorumlara/maillere de cevap veremedim. Lütfen kusuruma bakmayın. Öyle sanıyorum ki artık biraz daha fazla boş zamanım olacak. Mümkün olduğunda bu boş zamanlarım da Bloğum ile ilgileneceğim. Bu yazımda çok basit anlamda PHP ve MySQL ile Üyelik Sistemi mantığını dilim döndüğünce anlatmaya çalışacağım. Aslında PHP ve MySQL ile Üyelik sistemi tek bir yazıdan oluşmuyor. Muhtemelen 4 yada 5 yazıdan/bölümden oluşacak. Fakat, öncelikle ilk 2 kısmı yayınlayacağım. İhtiyaç olursa biraz daha geliştirip, ROL(ROLE) bazlı yapmayı düşünüyorum. İlk iki yazı giriş düzeyinde olacak.

Yukarıda da belirttiğim üzere PHP ve MySQL ile Üyelik Sistemi yazılarımı parçalara bölerek ilerleyeceğim. Bu yazımda PHP ve MySQL ile Üyelik Sistemi mantığını anlatmaya çalışacağım. Eğer PHP ye aşina iseniz, Session ları biliyor iseniz bu yazıyı okumanıza gerek yok. Ama henüz bu işin başında iseniz, okumanız sizin için faydalı olabilir. Nedendir bilmiyorum ama ben buna pek php ile üyelik sistemi demek istemiyorum. Bana göre PHP ile Oturum Yönetimi demek daha doğru olur. Yine de en bilinen adı PHP ve MySQL ile Üyelik Sistemi. Bu nedenle başlığı da bilinen ad şeklinde koydum.

Ne yapacağız ?

Bu yazım da PHP ve MySQL ile Üyelik Sistemi mantığını anlatacağım. Bir sonra ki yazımda ise, kodlara girişeceğiz. Üçüncü yazımda ise bunu biraz daha geliştireceğiz ve Rol(Role) bazlı yapacağız. Şöyle ki;
Sitemiz de 3 gurup olduğunu düşüneceğiz. Bunlar;

  1. Normal Kullanıcılar: ROLE_USER
  2. Müşteriler: ROLE_MEMBER
  3. Sistem Yöneticisi: ROLE_ADMIN

Dediğim gibi bu sonra ki yazının konusu. Bu yazımda olayın mantığını anlatmaya çalışacağım. İnanıyorum ki işin aslını/mantığını kavrar iseniz daha kolay anlayabilirsiniz.

Nelere ihtiyacımız var ?

  1. Bilgisayarınız da hazır kurulu olan ve çalışan WamP, XamPP yada benzeri bir uygulama. Daha açık yazmak gerekirse, çalışacağınız bilgisayarda PHP+MySQL+Apache kurulu olmalı ve sorunsuz çalışmalı. Ben örneklerim de XamPP ı kullanacağım.
  2. Bir adet veritabanı sunucusu. Ben örneklerim de MariaDB/MySQL kullanacağım. WamP, XamPP yada benzeri bir uygulama yüklediyseniz, özel olarak aksini belirtmediyseniz MySQL bilgisayarınıza kurulmuştur..
  3. Bir adet Editör. ( PHPStorm, Notepad yada Notepad++) Ben PHPStorm kullanacağım.
  4. Veritabanı işlemlerimiz için bir adet Editör yada Uygulama. Burada editör olarak phpMyAdmin kullanabilirsiniz. Yada benim gibi HeidiSQL de kullanabilirsiniz. Ben örneklerim de HeidiSQL kullanacağım. WamP yada XamPP kullanıyor iseniz, phpMyAdmin kurmuşsunuzdur diye tahmin ediyorum.

Dosya-Dizin Yapısı

Bir framework kullanmadığımız için, dizin yapısını istediğimiz gibi kurabiliriz aslında. Yada istediğimiz dosya adını verebiliriz. Ben örneğim de aşağıda ki resme göre bir yapı kuracağım. Lütfen resmi inceleyin. Resmin altında kabaca, dosyaları ve dizinleri anlatacağım.

  • Dizin assets: css, js, jpg, png gibi assetlerimizin barındırıldığı dizin.
  • Dizin inc: içerisinde config.php dosyamız var. Veritabanı bağlantı bilgilerimiz yada diğer ortak özellikleri barındıran sayfamız. Hemen hemen yaptığımız her sayfaya çağıracağız(include)
  • Sayfa index.php: Herkes görebilir. Bu sayfada 3 adet önemli bağlantı/link var. Çeşitli durumlarda görünecek. Bunlar; Giriş Yap: login.php ye gidecek. Kayıt Ol: register.php ye gidecek. Oturum açmış ise Çıkış: logout.php ye gidecek. Dediğim gibi bu linkler çeşitli durumlara göre görünecek. Kişi zaten oturum açmış ise, Giriş Yap-login.php görünmeyecek vs vs vs.
  • Sayfa login.php: Oturum açma sayfamız için kullanılacak.
  • Sayfa logout.php: Oturum açmış kullanıcıların oturumlarını sonlandırmak, çıkış yapmalarını sağlamak için kullanacağız.
  • Sayfa register.php: Yeni kullanıcı kaydı için oluşturduk.
  • Sayfa login_check.php: Kullanıcı login.php sayfası ile oturum açmak istediğinde girdiği bilgileri buraya gönderecek. Bu sayfa duruma göre ya oturumu açacak, yada hata mesajları üretip, oturum açmak isteyen kişiyi login.php ye tekrar gönderecek.
  • Sayfa protected.php: Sadece üyelerimizin göreceği sayfa.

Aslında yukarıda gördüklerinizden fazlası var. Şimdilik resimde görünmediği için buraya yazmadım. Ama yazının devamında bu sayfaları da oluşturacağız. Devam Edelim.

PHP Session ve Cookie

Burada Session ve Cookie ‘yi ayrı ayrı ve uzun uzun açıklamayacağım. Bunun yerine Üyelik Sistemlerin de/Oturum Yönetimlerin de nasıl kullanıldıklarından bahsedeceğim. Session ve Cookie bazı noktalarda bir birine benzer iken bazı noktalarda ayrılırlar. Bu benzerlikleri ve farkları şimdilik bir kenara bırakırsak eğer, her ikisi de Üyelik Sistemlerinde birlikte kullanılabilirler.

Belki biliyorsunuz, belki de bilmiyorsunuz ama eğer WEB ‘e aşina iseniz ve uzun bir süredir websitelerini ziyaret ediyor, bazı sitelere üye oluyorsanız. Session ve Cookie ‘nin birlikte kullanımını görmemiş olmanız zor. Bazı sitelere girdiğimiz de ve oturum açmak istedğimiz de bizden Kullanıcı Adımızı, Şifremizi ister ve hemen altında da Beni Hatırla/Remember Me şeklinde bir form elemanı bulunur. İşte o Beni Hatırla/Remember Me cookie yardımıyla yapılır.

PHP ve MySQL ile Üyelik Sistemi / Olay örgüsü kabaca şöyle gerçekleşir;

  • Biz farkında olsakta olmasakta bir oturum/session başlatılır. Bu oturum ilk başlatıldığında TANIMSIZDIR. Başka bir değişle biz farkında olsakta olmasakta bizim için tanımsız bir oturum başlatır.
  • Login Formuna kullanıcı adımızı ve şifremizi gireriz. İhtiyaç duyuyorsak Beni Hatırla yıda aktif ederiz.(Beni Hatırlayı da aktif ettiğimizi varsayalım)
  • Login Formunu post ederiz. Yani göndeririz.
  • Post edilen bu bilgileri alan sayfa, forma girilen kullanıcı adını ve şifresini alır. Aldığı bu bilgileri veritabanında sorgular ve eşleşen bir kayıt bulmaya çalışır.
  • Kayıt bulursa, Oturumumuzu Tanımlar. Bulamaz ise, hata mesajı döner ve bizi tekrar Login Formuna gönderir.( Yada canı nereye istiyorsa oraya gönderir)
  • Tanımlı oturum var ise ve Beni Hatırla da aktif ise, bazı bilgileri tarayıcımıza cookie olarak gönderir.

En kaba haliyle olay böyle gerçekleşir. Şu soruyu sormamız gerek. Neden? Neden PHP ile üyelik sistemi yazmak istediğimde Session lara ihtiyacım var? Başka türlü olmaz mıydı ? Session olmadan yapamaz mıydım?

Yapabilirdik. Amaç kullanıcı bir sayfadan, öteki sayfaya geçtiğinde bazı bilgileri de bu sayfaya geçirmek. Bu bilgileri, kullanıcının sitemiz üzerinde ziyaret ettiği her sayfaya geçirebilseydik, yapabilirdik. Geçiremez miydik? Evet geçirirdik. Dilersek kullanıcı her linke tıkladığında gizli bir post/get/put yapar, o gitmek istediğimiz sayfaya bazı bilgileri gönderirdik. Yada bir txt dosyası oluşturabilir, burada bazı bilgileri alabilirdik. Göbeğimiz çatlardı ama inat edersek bunu bir şekilde çözebilirdik.

Peki o zaman neden illa Session kullanıyoruz.

Birincisi Maliyetli. PHP Session ile bu daha kolay, daha az kod yazarak yapılır. İkincisi ve yukarıda açıkladığım üzere Göbeğimiz Çatlardı. Üçüncüsü ve en önemlisi GÜVENLİ. Meraklı kullanıcılar, bizim isteğimiz dışında sitemizde bulunan diğer sayfalara kendilerince get/post/put metodları ile bilgi gönderebilir, açmadığı halde oturum açmış gibi görünebilirdi, ve sitemizi kolayca hackleye bilirdi. Yukarıda belirtmiş idim. Session ve Cookie bazı noktalarda ayrı, bazı noktalarda ise benzerler. İşte burada da ikisi arasında ki en keskin ayrılık ortaya çıkıyor.

Cookie/Çerez : Bir çerez tanımladığımızda bu çerezin adı ve değeri tarayıcıya yani kullanıcının bilgisayarına açıkca gönderilir ve bu değer istenilen süre boyunca tarayıcıda açık bir şekilde saklanır.

Session : Sessionda ise kaydedilen değer ve değerin adı tarayıcıya gönderilmez. Onun yerine PHPSESSID adında içinde uzun bir session id değeri bulunan bir çerez tanımlanır. Ve bizim oluşturduğumuz sessionlar sunucuda saklanır ve girenlerin gönderdiği PHPSESSID kimliğine göre kime ait oldukları bulunur ve yeniden düzenlenir.

Session olayı aynı kredi kartı kullanımı gibidir. Banka size bir kart verir bu kartın içinde size özel bir anahtar kod yer alır. Ama para ve bilgiler bankada saklanır.

PHP Session ile ilgili ayrıntılı bilgiler için BURAYA göz atabilirsiniz.

ÖZET / PHP ve MySQL ile Üyelik Sistemi

PHP’deki oturum desteği(Session), belli bir veriyi sonraki erişimlerden korumak için kullanılır. Böylece daha özelleştirilmiş uygulamalar oluşturabilir ve sitenizin çekiciliğini arttırabiliriz. Bu yazımda ki amaç, hiç bilgisi olmayan yada çok az bilgisi olan bir kullanıcıya PHP ve MySQL ile Üyelik Sistemi mantığını kabaca anlatmak idi. Eğer bu yazıyı okuduysanız, php ile yapılan üyelik sisteminde NEDEN SESSION ları kullanmalıyız sorusuna verilen yanıtı anlamış olmanız gerekiyor. Bir sonra ki yazım da, kod yazacağız. Sonra ki yazımda görüşmek dileği ile.


Devam >> Yazının Devamı İçin Tıklayın >> PHP ve MySQL ile Üyelik Sistemi