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.