Günümüzde internet dünyasında hemen hemen bir çok sitede üyelik sistemini görmekteyiz.Bu makaledede PHP ile üyelik sisteminin nasıl yapılacağı hakkında bilgiler edineceğiz.Makaleyi okumak için intermediate(orta) düzeyde PHP bilginiz olması gerekmektedir.

Makalenin içerdiği sayfalar;
fonksiyonlar.php = Fonksiyonları içeren sayfa
kayit.html = Kullanıcıların siteye üye olabilmesini sağlayan sayfa
uyepostala.php = Kullanıcının siteye üye olurken girdiği bilgileri veritabanına yazan ve aktivasyon linki gönderen sayfa.
aktifle.php = Kullanıcının hesabını aktif eden sayfa.
index.php = Anasayfa, kullanıcın karşılaştığı ilk sayfa (Login)
giriskontrol.php = Kullanıcı adı ve parolasını kontrol eden sayfa
yeni_sifre.html = Şifresini unutan kullanıcıların yeni bir şifre istemeleri için gereken form.
sifre_unuttum.php = yeni_sifre.html den gelen email adresine yeni şifre gönderen sayfa.


Öncelikle MySQL'de uyelik adında bir veritabanı yaratıp, şu sorguyu çalıştıralım:

CREATE TABLE kullanicilar (
id int(25) NOT NULL auto_increment,
ad_soyad varchar(25) NOT NULL default '',
kullanici varchar(25) NOT NULL default '',
sifre varchar(255) NOT NULL default '',
email varchar(25) NOT NULL default '',
hakkinda text NOT NULL,
kullanici_seviye enum('0','1','2','3') NOT NULL default '0',
kayit_tarih datetime NOT NULL default '0000-00-00 00:00:00',
akod varchar(255) NOT NULL default '',
aktiflik enum('0','1') NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;

Sorguyu çalıştırdıktan sonra MySQL veritabanı bağlantısını yapalım.

fonksiyonlar.php
// Db bağlantısı
function db_baglanti()
{
$db_host = "localhost";
$db_kullanici = "root"; // Db kullanıcı adınız
$db_sifre = ""; // Db şifreniz
$db_adi = "uyelik"; // Db adınız

$baglanti = mysql_connect($db_host, $db_kullanici, $db_sifre);
mysql_select_db($db_adi, $baglanti);

if(mysql_errno())
{
echo 'Veritabanına bağlanılamıyor ...';
exit;
}
}

// Rastgele sayı Oluştur.
function rastgelesayi() {
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
srand((double)microtime()*1000000);
$i = 0;
while ($i <= 7) {
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}

?>

Fonksiyonlara diğer sayfalardan ulaşabilmek için tek sayfada toplamak daha mantıklı olacaktır.Şimdi kullanıcıların kayıt olacağı basit bir form hazırlayalım.

kayit.html


Kayıt ol








































Ad Soyad: *
Kullanıcı adı: *
Şifre: *
Şifre tekrar: *
Email: *
Hakkında:






Kullanıcı bu formu doldurup gönderdiğinde uyepostala.php sayfasına post ettireceğiz.Uyepostala.php sayfası kullanıcının girdiği bilgileri veritabanına kaydedip, kullanıcıya hesabını etkinleştirmesi için mail göndermesini sağlayacak olan sayfadır.Gerekli açıklamalar kod içinde.

uyepostala.php

include ("fonksiyonlar.php");

// Bağlantı oluştur.

db_baglanti();

// Formdan verileri alalım.

$ad = stripslashes($_POST['ad']);
$kullanici = stripslashes($_POST['kullanici']);
$sifre = stripslashes($_POST['sifre']);
$sifre2 = stripslashes($_POST['sifre2']);
$email = stripslashes($_POST['email']);
$hakkinda = stripslashes($_POST['hakkinda']);

// Form kontrolleri

if((!$ad) || (!$kullanici) || (!$sifre) || (!$sifre2) || (!$email))
{
echo 'Gerekli bir bölümü boş bıraktınız.';
if(!$ad)
{
echo 'Ad soyadı boş bıraktınız.';
}
if(!$kullanici)
{
echo 'Kullanıcı adını boş bıraktınız.';
}
if(!$sifre)
{
echo 'Şifre alanını boş bıraktınız.';
}
if(!$sifre2)
{
echo 'Şifrenizi tekrar yazmadınız.';
}
if($sifre != $sifre2)
{
echo 'Şifreler uyuşmuyor.';
}
if(!$email)
{
echo 'Emaili alanını boş bıraktınız.';
}
include("kayit.html");
exit;
}
// Yazılan kullanıcı adı veya email daha önce başkası tarafından alınmış mı?

$email_kontrol = mysql_query("select email from kullanicilar where email='$email'");
$kullanici_kontrol = mysql_query("select kullanici from kullanicilar where kullanici='$kullanici'");

// Sonucu alalım
$email_kontrol2 = mysql_num_rows($email_kontrol);
$kullanici_kontrol2= mysql_num_rows($kullanici_kontrol);

if(($email_kontrol2 > 0) || ($kullanici_kontrol2 > 0))
{
echo 'Hata oluştu.';

if($email_kontrol2 > 0)
{
echo 'Bu email adresi zaten kullanılıyor.';
unset($email);
}
if($kullanici_kontrol2 > 0)
{
echo 'Bu kullanıcı adı zaten kullanılıyor.';
unset($kullanici);
}
include("kayit.html");
exit;
}


$rastgele_sayi = rastgelesayi();
$sifre2 = sha1($sifre);

// Girilen Bilgileri Dbye yazdırıyoruz.

$sql = "insert into kullanicilar (ad_soyad, kullanici, sifre, email, hakkinda, akod, kayit_tarih)
values('$ad[/swf2][swf3]$kullanici[/swf2][swf3]$sifre2[/swf2][swf3]$email[/swf2][swf3]$hakkinda[/swf2][swf3]$rastgele_sayi', now())";
$sql2 = mysql_query($sql);

// Dbye yazdırırken bir hata oluşursa;

if(!$sql2)
{
echo 'Bir hata oluştu.Lütfen daha sonra tekrar deneyin.';
}
else
{
$kullanici_id = mysql_insert_id();

// Kullanıcıya hesabını etkinleştirmesi için mail gönderiyoruz.

$konu = "Üyelik Onayı";
$mesaj = " Sayın $ad

Üyelik işleminizi tamamlamak için aşağıdaki linke tıklayın ya da adres çubuğuna kopyalayın.

http://www.domain.com/aktifle.php?id=$kullanici_id&akod=$rastgele_sayi

Giriş Bilgileriniz;

Kullanıcı adı: $kullanici
Şifre: $sifre

Teşekkürler.";

mail($email, $konu, $mesaj, "From: Domain.com");

echo 'Kullanıcı bilgileriniz email adresinize gönderildi.Üyeliğizi onaylamak için lütfen email adresinizdeki
bağlantıya tıklayın.Aksi halde siteye giriş yapamazsınız .
';

echo 'Anasayfa için tıklayın';

}
?>



Kullanıcıya maili de gönderdikten sonra hesabını aktifleştirmesi için gereken sayfayı yani aktifle.php sayfasını yapalım.



aktifle.php

include ("fonksiyonlar.php");

db_baglanti();

// Urlden verileri al.

$kullanici_id = $_REQUEST['id'];
$akod = $_REQUEST['akod'];

$sql = mysql_query("update kullanicilar SET aktiflik='1' where id='$kullanici_id' AND akod='$akod'");

$sql2 = mysql_query("select * from kullanicilar where id='$kullanici_id' AND akod='$akod' AND aktiflik='1'");

$kontrol = mysql_num_rows($sql2);

if($kontrol == 0)
{
echo 'Hesabınız etkinleştirilemedi';
}
elseif($kontrol > 0)
{
echo 'Tebrikler üye olmayı başardınız.';

include("index.php");

}
?>

Üyeliği aktifleştirdikten sonra kullanıcının giriş yapabilmesi için gereken formu yapalım.Yani anasayfayı yapalım.
index.php

@session_start();

// Giriş yapılmamışsa
if(!isset($_SESSION['kullanici']))
{
?>


Giriş



























Kullanıcı:
Şifre:
Şifremi Unuttum
Üye ol





}
// Giriş yapılmışsa
else
{
echo "Hoşgeldiniz, " . $_SESSION['kullanici']."

";
echo "Kullanıcı seviyeniz, " . $_SESSION['kullanici_seviye']."
Şu bölümleri görebilirsiniz.
";
// Kullanıcı seviyesi 0 ise
if($_SESSION['kullanici_seviye'] == 0)
{
echo 'HTML,ASP,PHP';
}
// Kullanıcı seviyesi 3 ise
if($_SESSION['kullanici_seviye'] == 3)
{
echo 'Asp.net,C#, Java';
}
echo '

Çıkış yapmak için tıklayın';
}
?>



Kullanıcı adı ve parolasını kontrol edicek olan giriskontrol.php sayfası aynı zamanda kullanıcıya sessionları atayan sayfadır.

giriskontrol.php
@session_start();

include("fonksiyonlar.php");

db_baglanti();

// Formdan verileri alıyoruz.
$kullanici = addslashes($_POST['kullanici']);
$sifre = addslashes($_POST['sifre']);

// Form kontrolleri

if((!$kullanici) || (!$sifre))
{
echo 'Lütfen tüm alanları doldurun.';
include("index.php");
}
else
{
//Parolayı sha1 olarak alıyoruz.
$sifre2 = sha1($sifre);

// Şimdi kullanıcı adı,şifre, aktif mi? kontrolü

$sql = mysql_query("select * from kullanicilar where kullanici='$kullanici' and sifre='$sifre2' and aktiflik=' 1' ");
$sql2 = mysql_num_rows($sql);

if ($sql2 > 0)
{
while($yaz = mysql_fetch_array($sql))
{

$_SESSION['kullanici'] = $kullanici;
// Veritabanından kullanıcı seviyesini alıp, sessiona kaydediyoruz.
$_SESSION['kullanici_seviye'] = $yaz['kullanici_seviye'];

header("Location: index.php");
}
}
else
{
echo 'Kullanıcı adı veya parola yanlış.Yada hesabınızı aktifleştirmediniz !';
}
}
?>

Kullanıcıların yeni bir şifre istemeleri için gereken formu yapalım.

yeni_sifre.html


Şifremi Unuttum



Email :






yeni_sifre.html sayfasını karşılayacak olan sifre_unuttum.php sayfasını yapalım.

sifre_unuttum.php

include("fonksiyonlar.php");

db_baglanti();

$email = $_POST['email'];
if(!$email)
{
echo "Lütfen kayıt olurken girdiğiniz mail adresini giriniz.";
include ("yeni_sifre.html");
exit();
}
// Email adresini kontrol et.
$email_kontrol = mysql_query("select * from kullanicilar where email='$email'");
$email_kontrol2 = mysql_num_rows($email_kontrol);
if($email_kontrol2 == 0)
{
echo 'Girdiğiniz email adresi kayıtlı değil.';
unset($email);
include ("yeni_sifre.html");
exit();
}

// Rastgele sayı üret
$rastgele_sayi = rastgelesayi();
// Rastgele üretilen sayıyı sha1 yap.
$yeni_sifre = sha1($rastgele_sayi);

// Sha1 olan şifreyi dbye kaydet, normal şifreyi maille kullanıcıya gönder.
$sql = mysql_query("update kullanicilar set sifre='$yeni_sifre' where email='$email'");
$konu = "Şifre hatırlatma";
$mesaj = " Merhaba, bizden yeni şifre istemişsiniz.Buyrun

Yeni şifreniz: $rastgele_sayi



Beğeniler: 0
Favoriler: 0
İzlenmeler: 1600
favori
like
share