• 15-08-2007, 23:54:04
    #1
    Üyeliği durduruldu
    edit : 3Farklı üyelik seviyeli ve e-posta doğrulamalı bir üyelik sistemi.

    İlk önce index.php sayfamızı oluşturalım.

    <?php
    @session_start();
    
    # Eğer giriş yapılmamış ise ziyaretçiye giriş ve üyelik formunu gösterelim.
    if(!isset($_SESSION['kullanici']))
    {
    ?>
    <html>
    <head>
    <title>Giriş</title>
    <style type="text/css">
    table {
    font-family: Arial;
    font-size: 9pt;
    }
    </style>
    </head>
    <body>
    
    <form action="giriskontrol.php" method="post">
    <table border="0">
    <tr>
    <td>Kullanıcı:</td>
    <td><input type="text" name="kullanici"></td>
    </tr>
    
    <tr>
    <td>Şifre:</td>
    <td><input type="password" name="sifre"></td>
    </tr>
    
    <tr>
    <td></td>
    <td><input type="submit"></td>
    </tr>
    
    <tr>
    <td><a href="yeni_sifre.html">Şifremi Unuttum</a></td>
    <tr>
    <td><a href="kayit.html">Üye ol</a></td>
    </tr>
    
    </table>
    </form>
    </center>
    </body>
    </html>
    <?php
    }
    # Eğer giriş yapılmış ise üyeyi tanıyalım.
    else
    {
      echo "Hoşgeldiniz,  " . $_SESSION['kullanici']."<br><br>";
      echo "Kullanıcı seviyeniz, " . $_SESSION['kullanici_seviye']."<br><b>Bu bölümleri görebilirsiniz.</b><br>";
      # Seviye "0" ise
      if($_SESSION['kullanici_seviye'] == 0)
      {
        echo 'HTML,ASP,PHP';
      }
       # Seviye "3" ise
      if($_SESSION['kullanici_seviye'] == 3)
      {
        echo 'Asp.net,C#, Java';
      }
      echo '<br><br>Çıkış yapmak için <a href="cikis.php">TIKLA</a>';
    }
    
    ?>
    index.php de sayfamıza gelen kişi ziyuaretçi ise giriş ve kayıt linklerini eğer üye ve giriş yapmış ise session ile görmesi gereken sayfaları gösteriyoruz.geliştirmek size kalmış.


    Ardından giriskontrol.php sayfamızı inceliyoruz.

    <?php
    @session_start();
    
    include("fonksiyonlar.php");
    
    db_baglanti();
    
    # Formdan veri çekiyoruz
    
    $kullanici = addslashes($_POST['kullanici']);
    $sifre = addslashes($_POST['sifre']);
    
    # Form Kontrolleri
    
    if((!$kullanici) || (!$sifre))
    {
      echo '<font color="red">Lütfen tüm alanları doldurun.</font>';
      include("index.php");
    }
    else
    {
    # Parolayı Shal olarak alıyoruz
    $sifre2 = sha1($sifre);
    
    # Kullanıcı adı ve şifre atifmi kontrolü yapıyoruz.
    
    $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;
    # Databaseden kullanıcı seviyesini alıp sesiona atıyoruz
      $_SESSION['kullanici_seviye'] = $yaz['kullanici_seviye'];
    
      header("Location: index.php");
    }
    }
    else
    {
      echo '<font color="red">Kullanıcı adı ve parola yanlış, yada hesabınızı aktif etmediniz. !</font>';
    }
    }
    ?>
    Kontroller ve onay sayfası için

    <?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']);
    
    # Kontrol Edelim
    
    if((!$ad) || (!$kullanici) || (!$sifre) || (!$sifre2) || (!$email))
    {
      echo '<font color="red">Gerekli bir bölümü boş bıraktınız.</font>';
      if(!$ad)
      {
        echo '<font color="red">Ad soyadı boş bıraktınız.</font>';
      }
      if(!$kullanici)
      {
        echo '<font color="red">Kullanıcı adını boş bıraktınız.</font>';
      }
      if(!$sifre)
      {
        echo '<font color="red">Þifre alanını boş bıraktınız.</font>';
      }
      if(!$sifre2)
      {
        echo '<font color="red">Þifrenizi tekrar yazmadınız.</font>';
      }
      if($sifre != $sifre2)
      {
        echo '<font color="red">Şifreler uyuşmuyor.</font>';
      }
      if(!$email)
      {
        echo '<font color="red">Emaili alanını boş bıraktınız.</font>';
      }
      include("kayit.html");
      exit;
    }
    # Yazılın kullanıcı adı yada mail daha önce alınmışmı bakalım.
    
    $email_kontrol = mysql_query("select email from kullanicilar where email='$email'");
    $kullanici_kontrol = mysql_query("select kullanici from kullanicilar where kullanici='$kullanici'");
    
    # Sonucu
    $email_kontrol2 = mysql_num_rows($email_kontrol);
    $kullanici_kontrol2= mysql_num_rows($kullanici_kontrol);
    
    if(($email_kontrol2 > 0) || ($kullanici_kontrol2 > 0))
    {
      echo '<font color="red">Hata oluştu.</font>';
      
      if($email_kontrol2 > 0)
      {
        echo '<font color="red">Bu email adresi zaten kullanılıyor.</font>';
        unset($email);
      }
      if($kullanici_kontrol2 > 0)
      {
        echo '<font color="red">Bu kullanıcı adı zaten kullanılıyor.</font>';
        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', '$kullanici', '$sifre2', '$email', '$hakkinda', '$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.10bir.net/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<admin@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 .<br />';
        
    echo 'Anasayfa için <a href="index.php">tıklayın</a>';
    
    }
    
    ?>
    ardından üye onay sayfası

    <?php
    
    include ("fonksiyonlar.php");
    
    db_baglanti();
    
    # Linkden bilgileri çekelim.
    
    $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 aktifleştirilemedii';
    }
    elseif($kontrol > 0)
    {
    echo 'Tebrikler üye olmayı başardın.';
    
    include("index.php");
    
    }
    ?>

    Şifremi unutum sayfası

    <?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 '<font color="red">Girdiğiniz email adresi kayıtlı değil.</font>';
        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 kullancya gönder.
    $sql = mysql_query("update kullanicilar set sifre='$yeni_sifre' where email='$email'");
    $konu = "Þifre hatrlatma";
    $mesaj = " Merhaba, bizden yeni şifre istemişsiniz.Buyrun
    
    Yeni şifreniz: $rastgele_sayi
    
    http://www.10bir.net/
    
    Teşekkürler.";
    
    mail($email, $konu, $mesaj, "From: Domain.com<admin@domain.com>");
    
    echo 'Yeni şifreniz arzu ettiğiniz adrese gönderilmiştir.';
    
    ?>
    Kullanılan Fonksiyonlar


    <?php
    # Db bağlantısı
    function db_baglanti()
    {
      $db_host = "localhost";
      $db_kullanici = "r10"; 
      $db_sifre = "123456";    
      $db_adi = "root";    
    
      $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;
    }
    
    ?>
    ve çıkış sayfamız.

    <?php
    session_start();
    if(!isset($_SESSION['kullanici']))
    {
      echo 'Hayrola nerden ?';
    }
    else 
    {
    session_destroy();
    
    header("Location: index.php");
    }
    
    ?>
    2 tanede html sayfamız var


    Kayıt HTML

    <html>
    <head>
    <title>Kayıt ol</title>
    <style type="text/css">
    table {
    font-family: Arial;
    font-size: 9pt;
    }
    </style>
    </head>
    <body>
    <form action="uyepostala.php" method="post">
    <table border="0">
    <tr>
    <td>Ad Soyad: </td>
    <td><input type="text" name="ad"> *</td>
    </tr>
    
    <tr>
    <td>Kullanıcı adı: </td>
    <td><input type="text" name="kullanici"> *</td>
    </tr>
    
    <tr>
    <td>Şifre: </td>
    <td><input type="password" name="sifre"> *</td>
    </tr>
    
    <tr>
    <td>Şifre tekrar: </td>
    <td><input type="password" name="sifre2"> *</td>
    </tr>
    
    <tr>
    <td>Email: </td>
    <td><input type="text" name="email"> *</td>
    </tr>
    
    <tr>
    <td>Hakkında: </td>
    <td><textarea name="hakkinda" rows="10" cols="23"></textarea></td>
    </tr>
    
    <tr>
    <td></td>
    <td><input type="submit" onClick="javascript:this.form.submit();this.disabled=true;this.value='Gönderiliyor...';" value="G&ouml;nder"></td>
    </tr>
    
    </table>
    </body>
    </html>
    Yenisifre html

    <html>
    <head>
    <title>Şifremi Unuttum</title>
    </head>
    <body>
    <form action="sifre_unuttum.php" method="post">
    Email :<input type="text" name="email"><br  />
    <input type="submit">
    </form>
    </body>
    </html>

    Takılan yapamayan olursa yazarsınız..

    unutmadan sql i
    -- phpMyAdmin SQL Dump
    -- version 2.9.2
    -- http://www.phpmyadmin.net
    -- 
    -- Anamakine: localhost
    -- Üretim Zamanı: 15 Ağustos 2007 saat 23:28:54
    -- Sunucu sürümü: 5.0.33
    -- PHP Sürümü: 5.2.1
    -- 
    -- Veritabanı: `r10`
    -- 
    
    -- --------------------------------------------------------
    
    -- 
    -- Tablo yapısı: `kullanicilar`
    -- 
    
    CREATE TABLE `kullanicilar` (
      `id` int(25) NOT NULL auto_increment,
      `ad_soyad` varchar(25) collate latin1_general_ci NOT NULL default '',
      `kullanici` varchar(25) collate latin1_general_ci NOT NULL default '',
      `sifre` varchar(255) collate latin1_general_ci NOT NULL default '',
      `email` varchar(25) collate latin1_general_ci NOT NULL default '',
      `hakkinda` text collate latin1_general_ci NOT NULL,
      `kullanici_seviye` enum('0','1','2','3') collate latin1_general_ci NOT NULL default '0',
      `kayit_tarih` datetime NOT NULL default '0000-00-00 00:00:00',
      `akod` varchar(255) collate latin1_general_ci NOT NULL default '',
      `aktiflik` enum('0','1') collate latin1_general_ci NOT NULL default '0',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;
    
    -- 
    -- Tablo döküm verisi `kullanicilar`
    -- 
    
    INSERT INTO `kullanicilar` VALUES (1, 'volkan', 'bagcali', 'fa6977c99b809db68e1c56888ec38bd004719b39', 'volkan@dode.com.tr', 'r10.net', '0', '2007-08-15 23:26:08', 'ua8umew1', '0');


    ekstra bir üyelik seviyesi eklenip db yapısı değiştirilmiştir.
    özgem'li ... ((:
  • 16-08-2007, 23:04:45
    #2
    php yi öğrenmeye çalışan biri olarak, böyle paylaşım yaptığın için teşekkür ediyorum.
  • 17-08-2007, 02:03:50
    #3
    Üyeliği durduruldu
    teşekkür ederim devamını bekliyoruz
  • 19-08-2007, 07:18:48
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    güzel bir örnek olmuş
  • 24-08-2007, 21:36:30
    #5
    Üyeliği durduruldu
    sağolasın herkesin işine yarabilecek bir kod
  • 28-08-2007, 14:02:48
    #6
    kardes eline saglı guzel bir paylasım olmus fakat php de yeni oldugum icin hangisinin hangi dosya oladugunu karıstırdım acaba kodlara ait belge isimlerini yazabilirmisin tesekkurler....
  • 28-08-2007, 14:07:16
    #7
    bydesign adlı üyeden alıntı: mesajı görüntüle
    kardes eline saglı guzel bir paylasım olmus fakat php de yeni oldugum icin hangisinin hangi dosya oladugunu karıstırdım acaba kodlara ait belge isimlerini yazabilirmisin tesekkurler....
    Üzerlerinde belirtmiş .
  • 28-08-2007, 14:55:17
    #8
    Üyeliği durduruldu
    Buradaki Makaleyidemi Sen Yazdın Acaba? Kodlar aynıda...
  • 28-08-2007, 15:15:07
    #9
    Bu üyelik sistemini mevcut bir siteme entegre edebilecek babayiğit aranıyor (ücretini pm atarsanız sevinirim)