PHP MySQL Rol Sistemi Yapımı

PHP ve MySQL kullanarak basit bir rol tabanlı yönetim sistemini nasıl yapılır onu göstereceğim. PHP rol sistemi


1. Kullanıcı rolleri için bir veritabanı tablosu oluşturun

CREATE TABLE `user_roles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
);

2. user_roles tablosuna bazı örnek kullanıcı rolleri ekleyin

INSERT INTO `user_roles` (`name`) VALUES ('administrator'),('editor'),('subscriber');

3. İzinler için bir veritabanı tablosu oluşturun

CREATE TABLE `permissions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `role_id` int(11) NOT NULL,
  `permission` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
);

4. İzinler tablosuna bazı örnek izinler ekleyin

INSERT INTO `permissions` (`role_id`, `permission`) VALUES (1, 'manage_users'),(1, 'manage_content'),(2, 'edit_content'),(3, 'view_content');

5. Bir kullanıcının belirli bir izni olup olmadığını kontrol etmek için bir işlev tanımlayın

function has_permission($role_id, $permission) {
    $conn = mysqli_connect('localhost', 'username', 'password', 'database_name');

    $query = "SELECT COUNT(*) as count FROM permissions WHERE role_id = $role_id AND permission = '$permission'";
    $result = mysqli_query($conn, $query);

    $data = mysqli_fetch_assoc($result);

    return $data['count'] > 0;
}

6. Kullanıcının rolüne ve izinlerine göre içeriği görüntülemek için has_permission() işlevini kullanın

session_start();

if(isset($_SESSION['user_role'])) { // check if user is logged in
    if(has_permission($_SESSION['user_role'], 'manage_content')) {
        // display content management options for administrators
        echo '<a href="/admin/content.php">Manage Content</a>';
    }
    
    if(has_permission($_SESSION['user_role'], 'edit_content')) {
        // display edit link for editors
        echo '<a href="/editor/edit.php?id=1">Edit Content</a>';
    }
}

Bu örnekte, önce uygulamamıza erişecek olan farklı kullanıcı türlerini depolamak için bir user_roles tablosu oluşturuyoruz. Daha sonra tabloya bazı örnek kullanıcı rolleri ekliyoruz.

Ardından, her rolle ilişkili çeşitli izinleri depolamak için bir izin tablosu oluşturuyoruz. Tabloya bazı örnek izinler ekliyoruz.

Ardından, bağımsız değişken olarak bir rol kimliği ve bir izin alan bir has_permission() işlevi tanımlarız ve belirtilen role belirtilen iznin verilip verilmediğini kontrol etmek için izinler tablosunu sorgularız.

Son olarak, kullanıcının rolüne ve izinlerine göre içeriği görüntülemek veya gizlemek için has_permission() işlevini kullanırız. Bu durumda, kullanıcının manage_content veya edit_content izinlerine sahip olup olmadığını kontrol eder ve buna göre uygun bağlantıları veya seçenekleri görüntüleriz.

Bunun sadece basit bir örnek olduğunu ve gerçek dünyadaki bir uygulamada, sisteminizin güvenliğini sağlamak için muhtemelen daha gelişmiş kimlik doğrulama ve yetkilendirme mekanizmaları uygulamak isteyeceğinizi unutmayın.