Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden Sie PHP und MySQL, um ein leistungsstarkes System zur Benutzerrechtekontrolle zu implementieren

Verwenden Sie PHP und MySQL, um ein leistungsstarkes System zur Benutzerrechtekontrolle zu implementieren

WBOY
WBOYOriginal
2023-06-25 10:04:391363Durchsuche

In modernen Webanwendungen ist die Kontrolle der Benutzerberechtigungen von entscheidender Bedeutung. Um die Sicherheit und Integrität einer Anwendung zu gewährleisten, muss der Benutzerzugriff auf bestimmte Vorgänge und Informationen eingeschränkt werden und die spezifischen Aufgaben, die Benutzer ausführen dürfen, müssen definiert werden. In diesem Artikel werde ich vorstellen, wie Sie mit PHP und MySQL ein leistungsstarkes Benutzerberechtigungskontrollsystem erstellen, um die Sicherheit und Integrität Ihrer Webanwendungen zu gewährleisten.

1. Design von Datenbanktabellen

In der MySQL-Datenbank benötigen wir mindestens zwei Tabellen, um das Benutzerberechtigungskontrollsystem zu implementieren. In der ersten Tabelle werden grundlegende Informationen für alle Benutzer aufgezeichnet, einschließlich Benutzername, Passwort und E-Mail-Adresse. Die zweite Tabelle ist die Berechtigungstabelle, die die Berechtigungen jeder Rolle/Benutzergruppe aufzeichnet. Daher müssen wir die folgenden zwei Tabellen in der Datenbank erstellen:

  1. users table

CREATE TABLE users (users (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(50) NOT NULL,
password varchar(255) NOT NULL,
email varchar(100) NOT NULL,
PRIMARY KEY (id)
);

  1. roles表

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

我们还需要一个将用户和角色关联的表。这个表将用户ID映射到角色ID。让我们来创建这个表。

  1. role_user表

CREATE TABLE role_user (
role_id int(11) NOT NULL,
user_id int(11) NOT NULL,
PRIMARY KEY (role_id,user_id),
CONSTRAINT FK_role_user_role_id FOREIGN KEY (role_id) REFERENCES roles (id),
CONSTRAINT FK_role_id_user_id FOREIGN KEY (user_id) REFERENCES users (id id int(11) NOT NULL AUTO_INCREMENT,
Benutzername varchar(50) NICHT NULL,

Passwort varchar(255) NICHT NULL,

E-Mail varchar(100) NICHT NULL,

PRIMÄR KEY (id)

);

  1. roles table

CREATE TABLE roles (

id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(50) NOT NULL,
  1. PRIMARY KEY (id)
  2. );

Wir benötigen außerdem eine Tabelle, die Benutzer und Rollen zuordnet. Diese Tabelle ordnet Benutzer-IDs Rollen-IDs zu. Lassen Sie uns diese Tabelle erstellen.

  1. role_user table

CREATE TABLE role_user (

role_id int(11) NOT NULL,

user_id int(11) NOT NULL ,

PRIMARY KEY (role_id,user_id),
    CONSTRAINT FK_role_user_role_id FOREIGN KEY (role_id) REFERENCES Rollen (id),
  1. CONSTRAINT FK_role_id_user_id FOREIGN KEY (user_id) REFERENCES users (id)
  2. );

2. Implementierung des Benutzerrechtekontrollsystems

    Da wir nun die erforderlichen Datenbanktabellen erstellt haben, können wir mit der Implementierung des Benutzerrechtekontrollsystems für unsere Anwendung beginnen. Hier sind einige grundlegende Konzepte:
Rolle

    Eine Rolle ist eine logische Struktur, die eine Reihe von Berechtigungen miteinander verknüpft. Beispielsweise können wir eine „Administrator“-Rolle erstellen und dieser Rolle alle administrativen Berechtigungen erteilen.
Berechtigungen

    Berechtigungen sind die Kontrollrechte einer bestimmten Funktion. Beispielsweise sind das Anzeigen, Erstellen, Bearbeiten und Löschen von Benutzern unterschiedliche Berechtigungen. Durch die Gewährung dieser Berechtigungen an bestimmte Rollen wird der Zugriff der Benutzer eingeschränkt.
Benutzer

Ein Benutzer ist eine Person, die mit einer Anwendung interagiert. Jedem Benutzer werden eine oder mehrere Rollen zugewiesen, die die Aktionen definieren, die der Benutzer ausführen und auf die er zugreifen kann.

Jetzt wollen wir sehen, wie man dieses System implementiert.

🎜🎜Benutzer erstellen🎜🎜🎜Für jeden neuen Benutzer müssen wir einen entsprechenden Benutzerdatensatz erstellen. Wir erstellen für jeden Benutzer einen Datensatz in der Tabelle „Benutzer“, einschließlich Benutzername, Passwort und E-Mail-Adresse. Verwenden Sie den folgenden Code, um den Benutzer zu erstellen. 🎜
function create_user($username, $password, $email) {
  // Encrypt password
  $encrypted_password = password_hash($password, PASSWORD_DEFAULT);

  // Prepare SQL statement
  $sql = "INSERT INTO users (username, password, email) VALUES (?, ?, ?)";

  // Bind parameters
  $stmt = $conn->prepare($sql);
  $stmt->bind_param("sss", $username, $encrypted_password, $email);

  // Execute statement
  if ($stmt->execute()) {
    return true;
  } else {
    return false;
  }
}
🎜🎜Erstellen einer Rolle🎜🎜🎜Das Erstellen einer Rolle ist sehr einfach. Fügen Sie einfach einen Datensatz in die Tabelle „Rollen“ ein. Hier ist ein Beispiel. 🎜
function create_role($name) {
  // Prepare SQL statement
  $sql = "INSERT INTO roles (name) VALUES (?)";

  // Bind parameters
  $stmt = $conn->prepare($sql);
  $stmt->bind_param("s", $name);

  // Execute statement
  if ($stmt->execute()) {
    return true;
  } else {
    return false;
  }
}
🎜🎜Benutzerrollen zuweisen🎜🎜🎜Da wir nun Benutzer und Rollen erstellt haben, müssen wir sie verknüpfen. Rollen können durch Einfügen der Rollen-ID und Benutzer-ID in die Tabelle „role_user“ zugewiesen werden. Nachfolgend finden Sie einige Beispielcodes. 🎜
function assign_role_to_user($role_id, $user_id) {
  // Prepare SQL statement
  $sql = "INSERT INTO role_user (role_id, user_id) VALUES (?, ?)";

  // Bind parameters
  $stmt = $conn->prepare($sql);
  $stmt->bind_param("ii", $role_id, $user_id);

  // Execute statement
  if ($stmt->execute()) {
    return true;
  } else {
    return false;
  }
}
🎜🎜Überprüfen Sie, ob der Benutzer die Berechtigung hat🎜🎜🎜Abschließend müssen wir prüfen, ob der Benutzer die Berechtigung zum Ausführen einer Aktion hat. Wir finden alle Rollen, zu denen der Benutzer gehört, und prüfen, ob die Rollen über die erforderlichen Berechtigungen verfügen. Gibt true zurück, wenn der Benutzer über die Berechtigung verfügt, andernfalls false. Nachfolgend finden Sie einige Beispielcodes. 🎜
function has_permission($user_id, $permission) {
  // Fetch user roles
  $sql = "SELECT role_id FROM role_user WHERE user_id = ?";
  $stmt = $conn->prepare($sql);
  $stmt->bind_param("i", $user_id);
  $stmt->execute();
  $result = $stmt->get_result();

  // Check if any role has permission
  while ($row = $result->fetch_assoc()) {
    $sql2 = "SELECT permissions FROM roles WHERE id = " . $row['role_id'];
    $result2 = $conn->query($sql2);

    if ($result2->num_rows == 1) {
      $row2 = $result2->fetch_assoc();

      $permissions = json_decode($row2['permissions'], true);

      if (in_array($permission, $permissions)) {
        return true;
      }
    }
  }

  // Permission not found
  return false;
}
🎜3. Zusammenfassung🎜🎜Die Verwendung von PHP und MySQL zum Erstellen eines Benutzerberechtigungskontrollsystems kann die Sicherheit und Integrität von Webanwendungen gewährleisten. Wir können den Benutzerzugriff auf bestimmte Vorgänge und Informationen basierend auf Rollen und Berechtigungen beschränken. Durch dieses System können wir Webanwendungen vor unbefugtem Zugriff schützen und so die Gesamtsicherheit verbessern. 🎜

Das obige ist der detaillierte Inhalt vonVerwenden Sie PHP und MySQL, um ein leistungsstarkes System zur Benutzerrechtekontrolle zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn