Php Pdo Üye Kayıt Sistemi Basit Örnek

php-pdo-kayit-sistemi-banner

Php programlama dilinde PDO sınıfı ile basit php pdo üye kayıt sistemi hakkında örnek yapacağım. Bu örnek üzerinde değişiklikler yaparak kendi basit kayıt sisteminizi oluşturabilirsiniz. Buradaki amacım üye kayıt formunun mantığını anlatmak ve aklınızda fikir oluşturmak.

Php programlamada normalde sayfaları tekrar engellemek için parçalamamız gerekir. Ancak burada kafanızın karışmaması için sayfaları parçalamadan örnek üzerinde çalışacağım. Amacım burada Php Pdo üye kayıt ekleme, silme, güncelleme ve listeleme işlemlerini uygulamalarda nasıl kullandığımız sade bir şekilde göstermektir.

Uygulamada Bootstrap CSS frameworkünü kullanacağız. Buradan benim projede kullandığım Bootstrap 4.3.1 sürümünü indirin. Eğer daha güncel sürümü indirmek ya da dokümanı okumak isterseniz Bootstrap sitesini ziyaret edebilirsiniz. Uygulamada kullanacağımız sürüm 4.3.1 sürümüdür. Farklı sürümlerde kullanım değişiklikleri olabilir.

Php Pdo Kayıt Sistemi Örneği

İlk olarak http://localhost/phpmyadmin adresine girerek bir veritabanı oluşturuyoruz. Bu veritabanı içerisine üyeler isminde bir tablo oluşturuyoruz. Aşağıdaki SQL kodlarını phpmyadmin’de SQL sayfasında çalıştırın örnek veritabanı ve üyeler tablosu oluşturulacaktır.

CREATE DATABASE ornek;
USE ornek;
CREATE TABLE `uyeler` (
  `uye_id` int(11) NOT NULL AUTO_INCREMENT,
  `uye_kadi` varchar(50) NOT NULL,
  `uye_sifre` varchar(20) NOT NULL,
  `uye_eposta` varchar(50) NOT NULL,
  PRIMARY KEY (`uye_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

Yukarıda veritabanı ve tablomuzu oluşturduk. Başlangıç için SQL kodları ile beş adet kayıt ekleyebilirsiniz ya da burayı geçerek direk formu oluşturup form üzerinden de kayıtları ekleyebilirsiniz.

INSERT INTO `uyeler` (`uye_id`, `uye_kadi`, `uye_sifre`, `uye_eposta`) VALUES
(5, 'Ali', 'ramboali', 'rambo_ali@eposta.com'),
(1, 'Mustafa', '123456', 'eposta@mustafaazak.com'),
(2, 'Hasan', 'hsn123', 'hasan@eposta.com'),
(3, 'Hüseyin', 'nysh', 'nysh@eposta.com'),
(4, 'Mehmet', 'temhem', 'temhem@eposta.com');

Yukardaki adımları tamamladıktan sonraki aşama olan veritabanına bağlanma kodlarımızı yazalım. 

baglanti.php oluşturalım ve aşağıdaki kodları yazalım.

<?php 
error_reporting(0);
/* Bağlantı Değişkenleri */
$hostname = "localhost";
$username = "root";
$pass = "";
$database = "ornek";

/* Mysql Bağlantı */
try {
    $db = new PDO("mysql:host=" . $hostname . "; dbname=" . $database . "; charset=utf8", "$username", "$pass");
} catch (PDOException $error) {
    print $error->getMessage();
  exit();
}
?>

Veritabanı bağlantımızı başarıyla tamamladık. Bir sonraki aşama Üye Kayıt formunu oluşturmak.

Üye Ekleme 

uye_ekle.php oluşturalım ve aşağıdaki kodları yazalım.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Üyelik Kayıt Sistemi</title>
<!-- BOOTSTRAP 4.3.1 FRAMEWORK PROJEMİZE DAHİL EDİYORUZ -->
    <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css">
    <script src="bootstrap/js/bootstrap.min.js"></script>
<!-- BOOTSTRAP 4.3.1 FRAMEWORK PROJEMİZE DAHİL EDİYORUZ -->
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col">
            <h4 class="mt-5">Üye Kayıt Formu</h4>
            <form method="post" action="">
                <div class="form-group">
                    <label>Kullanıcı Adı **</label>
                    <input type="text" class="form-control" placeholder="Kullanıcı adı girin" name="uye_kadi">
                </div>
                <div class="form-group">
                    <label>Şifre **</label>
                    <input type="password" class="form-control" placeholder="Şifre girin" name="uye_sifre">
                </div>
                <div class="form-group">
                    <label>Eposta **</label>
                    <input type="email" class="form-control" placeholder="Eposta girin" name="uye_eposta">
                </div>
                <div class="form-group form-check">
                    <input type="checkbox" class="form-check-input" name="onay">
                    <label class="form-check-label">Kuralları okudum, kabul ediyorum.</label>
                </div>
                <button type="submit" class="btn btn-primary">Kayıt Ol</button>
                <a href="uye_listesi.php" class="btn btn-success">Üye Listesi</a>
            </form>
        </div>
    </div>
</div>
</body>
</html>

Yukarıdaki kod ile formumuzu oluşturduk. Şimdi aynı sayfa içerisinde POST metodu ile gönderdiğimiz verileri alıp veritabanına ekleme işlemine geçebiliriz. Php kodlarımızı <form> etiketinin hemen üstüne yazalım.

<?php
if (isset($_POST["uye_kadi"])) {
  include "baglanti.php";

   $uye_kadi = trim($_POST["uye_kadi"]);
   $uye_sifre = trim($_POST["uye_sifre"]);
   $uye_eposta = trim($_POST["uye_eposta"]);
   $onay = trim($_POST["onay"] ? 1 : 0);
    if (empty($uye_kadi) || empty($uye_sifre) || empty($uye_eposta)) {
      echo '
       <div class="alert alert-danger" role="alert">
       Yıldızlı alanlar boş bırakılamaz.
      </div>';
    } else {
       if ($onay != 1) {
        echo '
        <div class="alert alert-danger" role="alert">
        Kuralları kabul etmediniz.
        </div>';
       } else {
         $ayni_uye_varmi = $db -> prepare("SELECT * FROM uyeler WHERE uye_kadi = ?");
         $ayni_uye_varmi -> execute(array($uye_kadi));
          if($ayni_uye_varmi -> rowCount()){
            echo '
            <div class="alert alert-danger" role="alert">
            Bu kullanıcı adı zaten kullanılıyor. Farklı bir kullanıcı adı deneyin.
            </div>';
          }else{
             $uye_ekle = $db->prepare("INSERT INTO uyeler (uye_kadi, uye_sifre, uye_eposta) VALUES (?,?,?)");
             $uye_ekle -> execute(array($uye_kadi, $uye_sifre, $uye_eposta));
             if ($uye_ekle){
               echo '
               <div class="alert alert-success" role="alert">
               Kayıt işlemi tamamlandı.
               </div>';
             }else{
               echo '
               <div class="alert alert-danger" role="alert">
               Üye kaydı başarısız. Bir sorun oluştu.
               </div>';
              }
          }
       }
    }
}
?>

Yukarıdaki php kodları ile birlikte artık üyenin veritabanına kayıt işlemini gerçekleştirebiliriz. Form aracılığıyla bir kaç kayıt ekleyelim.

Üye Kayıt Formu

Şimdi basitçe üyeleri bir tabloda listeleyelim.

Üye Listeleme

uye_listesi.php oluşturalım ve aşağıdaki kodları yazalım.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Üye Listesi</title>
    <!-- BOOTSTRAP 4.3.1 FRAMEWORK PROJEMİZE DAHİL EDİYORUZ -->
    <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css">
    <script src="bootstrap/js/bootstrap.min.js"></script>
    <!-- BOOTSTRAP 4.3.1 FRAMEWORK PROJEMİZE DAHİL EDİYORUZ -->
</head>

<body>
<div class="container">
    <div class="row">
        <div class="col">
            <h4 class="mt-5">Üye Listesi</h4>
            <table class="table">
                <thead class="thead-light">
                <tr>
                    <th scope="col">ID</th>
                    <th scope="col">Üye Kullanıcı Adı</th>
                    <th scope="col">Şifre</th>
                    <th scope="col">Eposta</th>
                    <th scope="col">İşlemler</th>
                </tr>
                </thead>
                <tbody>
                <?php
                include "baglanti.php";

                $uyeler = $db -> query("SELECT * FROM uyeler", PDO::FETCH_OBJ);
                foreach ($uyeler as $uye) { ?>
                    <tr>
                        <th scope="row"><?php echo $uye->uye_id;?></th>
                        <td><?php echo $uye->uye_kadi;?></td>
                        <td><?php echo $uye->uye_sifre;?></td>
                        <td><?php echo $uye->uye_eposta;?></td>
                        <td>
                            <a href="uye_duzenle.php?id=<?php echo $uye->uye_id;?>">[ Düzenle ]</a>
                            <a href="uye_sil.php?id=<?php echo $uye->uye_id;?>">[ Sil ]</a>
                        </td>
                    </tr>
                <?php } ?>
                </tbody>
            </table>
            <a href="uye_ekle.php" class="btn btn-success">Üye Kayıt Formu</a>
        </div>
    </div>
</div>
</body>
</html>

Üyeleri yukardaki kod ile tabloda listeledik. Üyeleri düzenlemek ve silmek içinde işlemler altında düzenleme ve silme linkleri oluşturduk. Burada oluşturduğumuz linkler ile bir GET parametresi gönderdik. Üye düzenleme ve silme sayfalarında bu GET parametresi ile gönderdiğimiz değere göre hangi üye üzerinde işlem yapacağımızı belirleyeceğiz.

Üye Listesi

Üye Düzenleme

uye_duzenle.php oluşturalım ve aşağıdaki kodları yazalım.

<?php
include "baglanti.php";
$id = $_GET["id"];
$uye_getir = $db->prepare("SELECT * FROM uyeler WHERE uye_id = ?");
$uye_getir->execute(array($id));
if ($uye_getir) {
    $uye = $uye_getir->fetch(PDO::FETCH_OBJ);
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Üye Düzenle</title>
    <!-- BOOTSTRAP 4.3.1 FRAMEWORK PROJEMİZE DAHİL EDİYORUZ -->
    <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css">
    <script src="bootstrap/js/bootstrap.min.js"></script>
    <!-- BOOTSTRAP 4.3.1 FRAMEWORK PROJEMİZE DAHİL EDİYORUZ -->
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col">
            <h4 class="mt-5">Üye Düzenle</h4>
            <?php
            if (isset($_POST["uye_kadi"])) {
                $uye_kadi = trim($_POST["uye_kadi"]);
                $uye_sifre = trim($_POST["uye_sifre"]);
                $uye_eposta = trim($_POST["uye_eposta"]);
                if (empty($uye_kadi) || empty($uye_sifre) || empty($uye_eposta)) {
                    echo '
                       <div class="alert alert-danger" role="alert">
                       Yıldızlı alanlar boş bırakılamaz.
                      </div>';
                } else {
                    $ayni_uye_varmi = $db->prepare("SELECT * FROM uyeler WHERE uye_kadi = ? AND uye_id != ?");
                    $ayni_uye_varmi->execute(array($uye_kadi, $id));
                    if ($ayni_uye_varmi->rowCount()) {
                        echo '
                           <div class="alert alert-danger" role="alert">
                           Bu kullanıcı adı zaten kayıtlı. Farklı bir kullanıcı adı deneyin.
                          </div>';
                    } else {
                        $uye_guncelle = $db->prepare("UPDATE uyeler SET uye_kadi = ?, uye_sifre = ?, uye_eposta = ? WHERE uye_id = ?");
                        $uye_guncelle->execute(array($uye_kadi, $uye_sifre, $uye_eposta, $id));
                        if ($uye_guncelle){
                            echo '
                           <div class="alert alert-success" role="alert">
                           Değişiklikler kayıt edildi. Listeye yönlendirilecek.
                           </div>';
                            header("Location:uye_listesi.php");
                        }else{
                            echo '
                           <div class="alert alert-danger" role="alert">
                           Üye güncelleme başarısız. Bir sorun oluştu.
                           </div>';
                        }
                    }
                }
            }
            ?>
            <form method="post" action="">
                <div class="form-group">
                    <label>Kullanıcı Adı **</label>
                    <input type="text" class="form-control" placeholder="Kullanıcı adı girin" name="uye_kadi"
                           value="<?php echo $uye->uye_kadi; ?>">
                </div>
                <div class="form-group">
                    <label>Şifre **</label>
                    <input type="text" class="form-control" placeholder="Şifre girin" name="uye_sifre"
                           value="<?php echo $uye->uye_sifre; ?>">
                </div>
                <div class="form-group">
                    <label>Eposta **</label>
                    <input type="email" class="form-control" placeholder="Eposta girin" name="uye_eposta"
                           value="<?php echo $uye->uye_eposta; ?>">
                </div>

                <button type="submit" class="btn btn-primary">Düzenlemeyi Kaydet</button>
                <a href="uye_listesi.php" class="btn btn-success">Üye Listesi</a>
            </form>
        </div>
    </div>
</div>
</body>
</html>

Yukarıdaki kodlar ile üye bilgilerini düzenlemeyi yazdık. Bu kodları aşağıda parça parça inceleyelim.

Kodların başında üye listesi sayfasından gönderdiğimiz id parametresini $_GET global değişkeni ile birlikte elde ettik. Daha sonra bu id değerine göre veritabanından üye bilgisini sorguladık. Eğer eşleşen bir üye var ise bunu $uye değişkenine dizi olarak aktardık. Aşağıdaki kodları inceleyin.

<?php
include "baglanti.php";
$id = $_GET["id"];
$uye_getir = $db->prepare("SELECT * FROM uyeler WHERE uye_id = ?");
$uye_getir->execute(array($id));
if ($uye_getir) {
    $uye = $uye_getir->fetch(PDO::FETCH_OBJ);
}
?>

Yukarıda $uye değişkenine aktardığımız verileri inputların value alanlarına yazdırdık. Aşağıdaki kodları inceleyin.

<input type="text" class="form-control" placeholder="Kullanıcı adı girin" name="uye_kadi" value="<?php echo $uye->uye_kadi; ?>">
<input type="text" class="form-control" placeholder="Şifre girin" name="uye_sifre" value="<?php echo $uye->uye_sifre; ?>">
<input type="email" class="form-control" placeholder="Eposta girin" name="uye_eposta" value="<?php echo $uye->uye_eposta; ?>">

Formda Düzenlemeyi Kaydet butonuna basıldığında yani form post metodu ile gönderildiğinde gönderilen verileri tekrar $_POST global değişkeni ile alıp değişkenlere aktardık. 

$uye_kadi = trim($_POST["uye_kadi"]);
$uye_sifre = trim($_POST["uye_sifre"]);
$uye_eposta = trim($_POST["uye_eposta"]);

Bu değişkenleri basit koşullardan geçirerek. Gönderilen input değerleri boş mu kontrol ettik. Daha sonra boş değilse aynı kullanıcı adına sahip başka kayıt olup olmadığını veritabanından sorguladık. Aynı kullanıcı adına sahip kayıt yok ise veritabanındaki bilgileri, gönderilen veriler ile güncelledik ve üye listesi sayfasına yönlendirme yaptık.

if (empty($uye_kadi) || empty($uye_sifre) || empty($uye_eposta)) {
      echo '
        <div class="alert alert-danger" role="alert">
        Yıldızlı alanlar boş bırakılamaz.
      </div>';
} else {
     $ayni_uye_varmi = $db->prepare("SELECT * FROM uyeler WHERE uye_kadi = ? AND uye_id != ?");
     $ayni_uye_varmi->execute(array($uye_kadi, $id));
        if ($ayni_uye_varmi->rowCount()) {
          echo '
          <div class="alert alert-danger" role="alert">
          Bu kullanıcı adı zaten kayıtlı. Farklı bir kullanıcı adı deneyin.
          </div>';
        } else {
          $uye_guncelle = $db->prepare("UPDATE uyeler SET uye_kadi = ?, uye_sifre = ?, uye_eposta = ? WHERE uye_id = ?");
          $uye_guncelle->execute(array($uye_kadi, $uye_sifre, $uye_eposta, $id));
             if ($uye_guncelle){
               echo '
               <div class="alert alert-success" role="alert">
               Değişiklikler kayıt edildi. Listeye yönlendirilecek.
               </div>';
               header("Location:uye_listesi.php");
             }else{
               echo '
               <div class="alert alert-danger" role="alert">
               Üye güncelleme başarısız. Bir sorun oluştu.
               </div>';
             }
        }
}

Yukarıda basit bir şekilde üye bilgilerinin güncelleme mantığını anlattık.

Üye Düzenleme Formu

Şimdi sıra üye silme işlemine geldi.

Üye Silme

uye_sil.php oluşturalım ve aşağıdaki kodları yazalım.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Üye Sil</title>
    <!-- BOOTSTRAP 4.3.1 FRAMEWORK PROJEMİZE DAHİL EDİYORUZ -->
    <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css">
    <script src="bootstrap/js/bootstrap.min.js"></script>
    <!-- BOOTSTRAP 4.3.1 FRAMEWORK PROJEMİZE DAHİL EDİYORUZ -->
</head>

<body>
<div class="container">
    <div class="row">
        <div class="col">
            <h4 class="mt-5">Üye Sil</h4>
            <?php

            include "baglanti.php";
            $id = $_GET["id"];
            $uye_getir = $db->prepare("SELECT * FROM uyeler WHERE uye_id = ?");
            $uye_getir->execute(array($id));
            if ($uye_getir->rowCount()) {

                $uye_sil = $db->prepare("DELETE FROM uyeler WHERE uye_id = ?");
                $uye_sil->execute(array($id));
                if ($uye_sil->rowCount()) {
                    echo '
                    <div class="alert alert-success" role="alert">
                    Üye silindi.
                    </div>';
                    header("Location:uye_listesi.php");
                } else {
                    echo '    
                    <div class="alert alert-danger" role="alert">
                    Üye silme başarısız. Bir sorun oluştu.
                    </div>';
                }

            } else {
                header("Location:uye_listesi.php");
            }

            ?>
        </div>
    </div>
</div>
</body>
</html>

Yukarıda üye silme işleminin kodlarını yazdık. Önce üye düzenlemedeki gibi GET metodu ile gönderilen id verisini $_GET global değişkeni ile alıyoruz ve veritabanında sorgulatıyoruz. Eşleşme var ise direk üye silme sorgusunu yapabiliriz. Eğer üye silindiyse üye listesi sayfasına yönlendiriyoruz. Bu işlem localhostta çok hızlı olacağı için sayfayı görememe ihtimaliniz yüksek.

include "baglanti.php";
$id = $_GET["id"];
$uye_getir = $db->prepare("SELECT * FROM uyeler WHERE uye_id = ?");
$uye_getir->execute(array($id));
if ($uye_getir->rowCount()) {
  $uye_sil = $db->prepare("DELETE FROM uyeler WHERE uye_id = ?");
  $uye_sil->execute(array($id));
     if ($uye_sil->rowCount()) {
        echo '
        <div class="alert alert-success" role="alert">
        Üye silindi.
        </div>';
        header("Location:uye_listesi.php");
     } else {
        echo '    
        <div class="alert alert-danger" role="alert">
        Üye silme başarısız. Bir sorun oluştu.
        </div>';
     }
  } else {
  header("Location:uye_listesi.php");
}

Eğer veritabanında id verisi ile eşleşen kayıt yok ise yine sayfayı üye listesi sayfasına yönlendiriyoruz.

Burada mantık php pdo üye kayıt ekleme, güncelleme, silme ve listeleme işlemlerini kavramak olduğu için herhangi bir güvenlik önlemi almadık. Sadece basit koşullar ile boş kayıt eklenmesini ve kayıt tekrarını engelledik.

Php pdo üye kayıt ekleme, düzenleme ve silme işlemleri yukardaki gibi isterseniz çalışma dosyalarını aşağıdaki linkten indirebilirsiniz. 

Çalışma dosyalarını indirmek için tıklayın.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir