1. Kullanıcı rolleri için bir veritabanı tablosu oluşturun
2. user_roles tablosuna bazı örnek kullanıcı rolleri ekleyin
3. İzinler için bir veritabanı tablosu oluşturun
4. İzinler tablosuna bazı örnek izinler ekleyin
5. Bir kullanıcının belirli bir izni olup olmadığını kontrol etmek için bir işlev tanımlayın
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
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.
Kod:
CREATE TABLE `user_roles` (
`id` int(11) NOT lisanssız AUTO_INCREMENT,
`name` varchar(50) NOT lisanssız,
PRIMARY KEY (`id`)
);
Kod:
INSERT INTO `user_roles` (`name`) VALUES ('administrator'),('editor'),('subscriber');
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`)
);
Kod:
INSERT INTO `permissions` (`role_id`, `permission`) VALUES (1, 'manage_users'),(1, 'manage_content'),(2, 'edit_content'),(3, 'view_content');
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;
}
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>';
}
}
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.