İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

PHP MySQL Rol Sistemi Yapımı

oxcakmak

0
İyinet Üyesi
Katılım
2 Ağustos 2018
Mesajlar
158
Reaction score
49
Konum
Kocaeli
1. Kullanıcı rolleri için bir veritabanı tablosu oluşturun
Kod:
CREATE TABLE `user_roles` (
  `id` int(11) NOT lisanssız AUTO_INCREMENT,
  `name` varchar(50) NOT lisanssız,
  PRIMARY KEY (`id`)
);
2. user_roles tablosuna bazı örnek kullanıcı rolleri ekleyin
Kod:
INSERT INTO `user_roles` (`name`) VALUES ('administrator'),('editor'),('subscriber');
3. İzinler için bir veritabanı tablosu oluşturun
Kod:
CREATE TABLE `permissions` (
  `id` int(11) NOT lisanssız AUTO_INCREMENT,
  `role_id` int(11) NOT lisanssız,
  `permission` varchar(50) NOT lisanssız,
  PRIMARY KEY (`id`)
);
4. İzinler tablosuna bazı örnek izinler ekleyin
Kod:
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
Kod:
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
Kod:
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.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst