Liebe Community,
nach langer Zeit melde ich mich wieder zu Wort mit einem komplizierten Problem. (Meiner Meinung nach)
Ich verwende ein Berechtigungssystem welches an eine SQL-Datenbank angeknüpft ist um so Benutzern das Betreten mancher Seiten gewähren zu können.
Jedem Benutzer kann man gewisse Berechtigungen (Nachfolgend Permissions) setzen oder entfernen - je nachdem.
Im Administratoren-Bereich gibt es eine Seite, bei der man Benutzerbearbeiten kann. Durch einen GET-Parameter wird die ID des zu bearbeitenden Users festgelegt.
Im Bearbeitungsmodus eines Benutzers kann ich die Permissions (Seiten-Zugriffe) festlegen und verwalten.

Wenn ich beispielsweise einem Benutzer eine Permission entferne (per Unchecken der Checkbox) soll gecheckt werden, ob der Benutzer diese Permission hat, wenn ja dann wird der Datensatz aus der Datenbank gelöscht.
Kurze Erklärung zum Aufbau der Permissions in der Datenbank:
Es gibt eine Tabelle in der die einzelnen Namen der Permissions in Define- und Klartextname angegeben sind.

Dann gibt es eine Tabelle, wo die Permissions Benutzer zugewiesen werden.

Es wird überprüft, ob in der Tabelle "site_permissions" (Die Tabelle wo die Permissions Benutzer zugewiesen werden) ein Datensatz mit dem entsprechenden Namen der Permission und der User-ID besteht.
Wenn ja, hat er die Berechtigung. - Wenn nicht, dann logischerweise nicht.
Zurück zu den Checkboxen:
Die Checkboxen werden dynamisch durch die Datenbank generiert. Es geht eine While-Schleife durch die Tabelle wo die Permissions definiert werden durch, und listet alle auf.
Dann wird für jede Checkbox gefragt, ob der Benutzer die Permission der angesprochenen Seite hat - oder nicht. (Wenn ja -> Checked; Wenn nicht -> /)
Was ich möchte:
Beim Absenden des Formulars, soll gecheckt werden, ob sich was geändert hat.
- Wenn ja: Was sich geändert hat. Sollte ein zuvor angehaktes Kästchen abgewählt worden sein, wird in der Datenbank die entsprechende Permission abhängig von User-ID gelöscht.
- - - - - - - Sollte ein zuvor nicht angehaktes Kästchen gewählt werden, wird in der Datenbank ein Datensatz mit der jeweiligen Permission und der User-ID erstellt.
Meine Codes:
nach langer Zeit melde ich mich wieder zu Wort mit einem komplizierten Problem. (Meiner Meinung nach)
Ich verwende ein Berechtigungssystem welches an eine SQL-Datenbank angeknüpft ist um so Benutzern das Betreten mancher Seiten gewähren zu können.
Jedem Benutzer kann man gewisse Berechtigungen (Nachfolgend Permissions) setzen oder entfernen - je nachdem.
Im Administratoren-Bereich gibt es eine Seite, bei der man Benutzerbearbeiten kann. Durch einen GET-Parameter wird die ID des zu bearbeitenden Users festgelegt.
Im Bearbeitungsmodus eines Benutzers kann ich die Permissions (Seiten-Zugriffe) festlegen und verwalten.
Wenn ich beispielsweise einem Benutzer eine Permission entferne (per Unchecken der Checkbox) soll gecheckt werden, ob der Benutzer diese Permission hat, wenn ja dann wird der Datensatz aus der Datenbank gelöscht.
Kurze Erklärung zum Aufbau der Permissions in der Datenbank:
Es gibt eine Tabelle in der die einzelnen Namen der Permissions in Define- und Klartextname angegeben sind.
Dann gibt es eine Tabelle, wo die Permissions Benutzer zugewiesen werden.
Es wird überprüft, ob in der Tabelle "site_permissions" (Die Tabelle wo die Permissions Benutzer zugewiesen werden) ein Datensatz mit dem entsprechenden Namen der Permission und der User-ID besteht.
Wenn ja, hat er die Berechtigung. - Wenn nicht, dann logischerweise nicht.
Zurück zu den Checkboxen:
Die Checkboxen werden dynamisch durch die Datenbank generiert. Es geht eine While-Schleife durch die Tabelle wo die Permissions definiert werden durch, und listet alle auf.
Dann wird für jede Checkbox gefragt, ob der Benutzer die Permission der angesprochenen Seite hat - oder nicht. (Wenn ja -> Checked; Wenn nicht -> /)
Was ich möchte:
Beim Absenden des Formulars, soll gecheckt werden, ob sich was geändert hat.
- Wenn ja: Was sich geändert hat. Sollte ein zuvor angehaktes Kästchen abgewählt worden sein, wird in der Datenbank die entsprechende Permission abhängig von User-ID gelöscht.
- - - - - - - Sollte ein zuvor nicht angehaktes Kästchen gewählt werden, wird in der Datenbank ein Datensatz mit der jeweiligen Permission und der User-ID erstellt.
Meine Codes:
- Erstellung der Checkboxen
[quote]<?
$permissions_sql = "SELECT * FROM `site_permissions_define`";
$query_perm = mysql_query($permissions_sql);
while($row_perm = mysql_fetch_assoc($query_perm)) { ?>
<div class="checkbox">
<label>
<input type="checkbox" name='permission[]' value="<? echo $row_perm["id"] ?>" <? if(expermission($id,$row_perm["define"]) > 0) { echo "checked"; } ?> />
<? echo $row_perm["name"]; ?>
</label>
</div>
<? } ?>[/quote] - Submit-Feld
[quote] <input type="submit" class="btn btn-primary btn-sm" name="site_send_useredit" value="Benutzeränderungen speichern" />[/quote] - Verarbeitung des Formulars
[quote]if(isset($_POST["site_send_useredit"])) {
echo "<br />";
if($_POST["cms_username"] == "" OR $_POST["cms_vorname"] == "" OR $_POST["cms_nachname"] == "" OR $_POST["cms_mail"] == "")
{
notify("danger","","Folgende Felder dürfen nicht leer sein:<ul><li>Username</li><li>Vorname</li><li>Nachname</li><li>E-Mail</li></ul>");
} else {
// Übermittlung Formular
}
}[/quote]