Ana Sayfa   -   Forum   -   Dersler   -   Dosyalar   -   Kaynak Siteler   -   E - Kitaplar   -   Etiketler

Php ile session kullanarak üyelik sistemi yapalım
Ana Sayfa / Makaleler / Php | 2 Yorum | 955 Okuma
Gönderen: altayalp | Tarih: 26 Mayıs 2008 Pazartesi
Merhaba değerli ziyaretçi ve üyelerimiz. Bir makale ile daha karşınızdayım. Bu makale eşliğinde çok işimize yarayan üyelik sistemi yapacağız. Bu makalede de diğer örnek uygulamalarda olduğu gibi, herkesin anlaması için çok basit ve temel noktalar ele alınacaktır.

Üyelik sistemlerinin temelini oturum yönetimi oluşturur. Oturum yönetimi hakkında bilgi sahibi değilseniz bu makaleden önce "Php'de session ile oturum yönetimi - http://www.dersler.org/php-php'de-session-ile-oturum-yonetimi-makale84.html">Php'de session ile oturum yönetimi" makelemi okuyup anlayınız. Öncelikle ihtiyacımız olan veritabanını oluşturun. Veritabanını oluşturduktan sonra 3 sütunlu uyeler isimli tablomuzu da oluşturalım. Tablo oluşturmak ve deneme isimli üyemizi kaydetmek için aşağıdaki sql sorgusunu kullanın.



KOD:
CREATE TABLE `uyeler` (
`uyeno` SMALLINT( 6 ) NOT NULL AUTO_INCREMENT ,
`uyead` VARCHAR( 20 ) NOT NULL ,
`uyesifre` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `uyeno` )
) TYPE = MYISAM ;
INSERT INTO `uyeler` ( `uyeno` , `uyead` , `uyesifre` )
VALUES (
'', 'deneme', '8cb2237d0679ca88db6464eac60da96345513964'
);


Deneme yapmak için kullandığımız üyemizin adı deneme şifresi ise 12345 dir. Gördüğünüz gibi üyemizin kullanıcı adını gayet rahat görebilmemize rağmen şifre alanında karışık rakam ve harfler görüyoruz. Bu güvenlik için alınmış bir önlemdir. Php'nin sha1() fonksiyonunu kullanarak üyelerin şifrelerini veritabanına geri dönüşü olmayan algoritmayla kayıt ederiz. Böylelikle eğer veritabanımıza bizim iznimiz dışında bir erişim sözkonusu olursa üyelerimizin şifreleri elde edilemez.

İlk olarak index.php sayfamızı oluşturalım, ziyaretçimiz üye girişi yapmış ise ismi ile hitab edip hoşgeldin diyelim, üye girişi yapmamışsa üye girişi yapması gerektiğini söyleyip giriş yapması için üye giriş formunu gösterelim.



PHP:
<?php
session_start
(); // oturum başlatılıyor veya mevcut oturuma devam ediliyor
if(!isset($_SESSION['uye'])) { // eğer üye giriş yapmamış ise
/*
html komutlarını rahat bir şekilde yazmak için
php etiketini kapatıyoruz.
*/
?>
Bu sayfanın içeriğini görebilmek için üye girişi yapmalısınız.
<form action="giris.php" method="post">
<input type="text" size="20" name="uyead" id="uyead" /><br />
<input type="password" size="20" name="sifre" id="sifre" /><br />
<input type="submit" id="giris" value="Giriş Yap" />
</form>
<?php
} else {
/* üye giriş yapmışsa hoşgeldin diyelim */
echo "Hoşgeldiniz Değerli Üyemiz " . $_SESSION['uye'] . "<br />";
echo
'Çıkış Yapmak İçin <a href="cikis.php">Tıklayın</a>';
}
?>


Kodların içerisindeki açıklamalardan anlaşıldığı gibi öncelikle session_start() fonksiyonu ile oturum başlatıyoruz. Eğer mevcut bir oturum varsa oturumun devam etmesini sağlıyoruz. Daha sonra isset() fonksiyonu ile oturum değişkenimizi kontrol ediyoruz. Oturum değişkeni yoksa üye giriş formu, varsa hoşgeldin mesajı görüntüleniyor.

Şimdide en önemli sayfamız olan giris.php sayfamızı oluşturalım:



PHP:
<?php
session_start
();

mysql_connect("localhost","root","12345") or die("mysqle bağlanılamıyor");
mysql_select_db("deneme") or die("veritabanı seçilemiyor");

$uyead = strip_tags(mysql_real_escape_string($_POST['uyead']));
$sifre = strip_tags(mysql_real_escape_string($_POST['sifre']));


if(
$sifre == "" || $uyead == "") {
echo
"Lütfen Tüm Alanları Doldurun";
} else {


$sifre = sha1($sifre);
$sql = mysql_query("select uyead from uyeler where uyead='$uyead' and uyesifre='$sifre'");
$uyevarmi = mysql_num_rows($sql);
if(
$uyevarmi == 0) {
echo
"üyelik bilgileri bulunamadı, tekrar deneyin";
} else {
$uyebilgi = mysql_fetch_assoc($sql);
$_SESSION['uye'] = $uyebilgi['uyead'];
echo
"<script>location.href='index.php';</script>"; // javascript yönlendirme kodu
} // if($uyevarmi == 0) kontrolü bitişi


} // if($sifre == "" || $uyead == "") kontrolü bitişi
?>


giris.php sayfamızda öncelikle oturumun devam etmesi için yine session_start() fonksiyonunu kullanıyoruz. Hemen ardından mysql bağlantımızı yapıp veritabanımı seçiyoruz. Form alanından gelen değişkenleri strip_tags() ve mysql_real_escape_string() fonksiyonlarını kullanarak alıyoruz. strip_tags() fonksiyonu kod etiketlerini temizlemek için kullanılır. mysql_real_escape_string() ise mysql için zararlı olabilecek kodları filtreler. Güvenlik önlemlerinden sonra uyead ve sifre alanlarının kontrolünü yapıyoruz. Eksik alan varsa uyarı veriyoruz. Gördüğünüz gibi sifre alanından gelen üye şifresini sha1() fonksiyonu ile yeniden şekillendirdik. Şifremiz veritabanında sha1 ile şifrelenmiş halde kayıtlı olduğundan şifremizi yine sha1'e çevirmek zorundayız. Yoksa kullanıcı doğru şifre girse bile şifreler birbirinden farklı olacağından yanlış şifre girdi olarak kabul edilir. Şifremizi sha1'e çevirdikten sonra mysql sorgumuzu oluşturduk. Mysql sorgumuzda yani:



KOD:
$sql = mysql_query("select uyead from uyeler where uyead='$uyead' and uyesifre='$sifre'");


Satırında uyeler tablosundan uyead alanını seçtik. Where deyimi ile form alanına girilen üye adı ve üye şifresine ait bilgileri tablomuzdan getirmesini istedik. Eğer üye yanlış bir şifre veya kullanıcı adı girerse sorgu sonuçu 0 sonuç dönecek, yani hiçbir sonuç dönmeyecektir. Bir mysql sorgusunda kaç adet veri döndüğünü mysql_num_rows() fonksiyonu ile öğrenebiliriz. Bizde mysql_num_rows() fonksiyonunu kullanarak sql sorgumuzda kaç satır veri çektiğimizi öğreniyoruz. Eğer bu sayı sıfır ise üye veritabanımızda bulunmuyor demektir. Bu işlemi:



KOD:
$uyevarmi = mysql_num_rows($sql);
if($uyevarmi == 0) {
echo "üyelik bilgileri bulunamadı, tekrar deneyin";


Kod satırlarında yaptık. Sorgu sonucu 0 değil ise üye veritabanımızda kayıtlı demektir dedik ve sql sorgumuzdan dönen verileri mysql_fetch_assoc() fonksiyonunu kullanarak $uyebilgi değişkenine aktardık.



KOD:
$_SESSION['uye'] = $uyebilgi['uyead'];


Kodunu kullanarak oturum değişkenini oluşturup değer olarak veritabanından çektiğimiz üyemizin kullanıcı adını oturum değişkenine aktardık ve javascript koduyla index.php sayfasına yönlendirdik. Son olarak üyemizin çıkış yapması için cikis.php sayfamıza ihtiyacımız var:



PHP:
<?php
session_start
();
unset(
$_SESSION['uye']); // oturum değişkeni siliniyor
echo "<script>location.href='index.php';</script>"; // index.php sayfasına yönlendiriliyor
?>


cikis.php sayfamız toplam 3 satır koddan oluşuyor. Zaten kodlar arasında açıklama olduğundan açıklama yapma gereği görmüyorum. Böylece basit bir üyelik sistemi oluşturmuş olduk. Nasıl yapıldığını öğrendiğinize göre daha da geliştirip siteleriniz için güzel sistemler oluşturabilirsiniz. Yardım almak için forumlarımızdan yararlanabilirsiniz. Hepinize kolay gelsin.
[ Makaleyi İndir ] [ Yazıcı Görüntüsü ] [ Tavsiye Et ] [ Takibe Al ] [ Yorum Ekle ]
Bu sayfayı Paylaşın : del.icio.us | Furl | Digg | Technorati | Reddit | Google Bookmarks | Simpy
 
Toplam 2 Yorum Yapılmış

Eksik gibi... | sRKn | 11 Haziran 2008 Çarşamba
hocam sen sadece üye adını sessionlara atıyıp kontrol etmişsin ? şifreyi neden sessiona atayıp kontrol etirmedin ?
session kontrol | altayalp | 12 Haziran 2008 Perşembe
@sRKn session ile kontrol yapmıyoruz sadece oturum değişkenini taşıyoruz. Üyenin şifre ve kullanıcı adı kontrolünü giris.php sayfasında sql sorgusu ve sorgu sonucu ile yaptık

Makale Yazarı
Kullanıcı Adı: altayalp
Diğer Makaleleri ( 100 )
26 Mayıs 2008 Pazartesi

Bu Kategoriye Yeni Makale Ekle

Üye Alanı
Toplam Üye: 2500
Üye Adı:
Şifre:
Yükleniyor
İşlem Yapılıyor Lütfen Bekleyin...
Şifremi Unuttum
Üye Olmak İçin Tıklayın

Çevrimiçi: 2 Ziyaretçi, 0 Üye Toplam 2 Kişi Bulunmakta

Dersler

Aklınıza Takılan Herhangi Bir Sorun Mu Var? Forumlarımızdan Yardım İsteyebilirsiniz...

Dersler.Org altyapı olarak kendi kodladığımız Enderûn İçerik Yönetim Sistemini kullanmaktadır.

Tüm AYYILDIZ sevdalılarına, Aziz ŞEHİTLERE, VATAN kutsaldır diyen yiğitlere ithaf olunmuştur.


© altayalp 2007 Her Hakkı Saklıdır
İzinsiz kullanılamaz. Enderûn İçerik Yönetim Sistemi
Ubuntu, Linux
Çalmak, Çırpmak Haliyle Yasaktır
ve maalesef en iyi internet explorer ile izlenir
eXTReMe Tracker