Installation des Nvskripts V2.5
1. MySQL-Tabellen
Das Skript benötigt drei Tabellen mit dem Namen users, login_protocol und user_profiles.
Das Skript darf unter der Lizenz CC BY-SA 4.0 verwendet verwenden.
1.1 Tabelle [users]
- user_id [INT][10][AUTOINCREMENT]
- username [VARCHAR][30][UNIQUE KEY]
- user_password [CHAR][255]
- user_email [VARCHAR][50][UNIQUE KEY]
- user_level [VARCHAR][50]
- user_date [DATETIME]
- last_activity [DATETIME]
1.2 Tabelle [login_protocol]
- login_id [INT][10][AUTOINCREMENT]
- login_username [VARCHAR][30]
- login_attempt [TINYINT][1]
- login_at [DATETIME]
1.3 Tabelle [user_profiles]
- user_profile_id [INT][10][AUTOINCREMENT]
- user_profile_image [VARCHAR][250]
- user_profile_location [VARCHAR][100]
- user_profile_description [VARCHAR][500]
- user_id [INT][10]
- FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
Alternativ kann auch der unten aufgeführte SQL-Code über phpMyAdmin eingefügt werden.
CREATE TABLE `users` (
`user_id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`user_password` char(255) NOT NULL,
`user_email` varchar(50) NOT NULL,
`user_level` varchar(50) NOT NULL DEFAULT 'locked',
`user_date` datetime NOT NULL,
`last_activity` datetime NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `username_unique` (`username`),
UNIQUE KEY `user_email_unique` (`user_email`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
CREATE TABLE `login_protocol` (
`login_id` int(10) NOT NULL AUTO_INCREMENT,
`login_username` varchar(30) NOT NULL,
`login_attempt` tinyint(1) NOT NULL,
`login_at` datetime NOT NULL,
PRIMARY KEY (`login_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
CREATE TABLE `user_profiles` (
`user_profile_id` int(10) NOT NULL AUTO_INCREMENT,
`user_profile_image` varchar(250) NOT NULL DEFAULT 'default_profile_picture.jpg',
`user_profile_location` varchar(100) NOT NULL,
`user_profile_description` varchar(500) NOT NULL,
`user_id` int(10) NOT NULL,
PRIMARY KEY (`user_profile_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `user_profiles_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
2. Verbindungsaufbau zur Datenbank
Der Verbindungsaufbau zur Datenbank erfolgt über [includes/db.php] [Z4-7], wo Name des Servers, Name der Datenbank, Nutzername und Passwort eingetragen werden müssen.
3. Administrationszugang und Registrierung
Ein Administrationszugang wird angelegt, indem man sich über [signup.php] registriert und dann über phpMyAdmin das [user_level] von [locked] auf [administrator] ändert. Registrierte Nutzern haben automatisch das [user_level] [locked]. Ein Nutzer mit dem [user_level] [locked] ist automatisch gesperrt und muss im Backend freigeschaltet werden.
4. Integration in bestehende Anwendungen
Das Skript lässt sich leicht in bestehende Anwendungen integrieren. Dazu muss in jeder neuen Datei, welche nur von Nutzern, Moderatoren oder Administratoren aufgerufen werden soll, die entsprechende Session abgefragt werden. Die notwendigen Dateien des Skripts müssen in korrekter Reihenfolge eingebunden werden.
- require_once 'includes/db.php';
- require_once 'includes/functions.php';
- update_last_activity($db);
- check_activation_status();
- require_once 'includes/header.php';
- require_once 'includes/footer.php';
check_activation_status(); darf nicht in einer Datei eingebunden werden, die nur von einem Administrator aufgerufen werden kann.
<?php
require_once 'includes/db.php';
require_once 'includes/functions.php';
update_last_activity($db);
check_activation_status();
require_once 'includes/header.php';
?>
<div class="mein_inhalt">
<p>Das Beispiel zeigt wie ein Template für eine neue Seite aussehen kann.</p>
</div>
<?php
require_once 'includes/footer.php';
?>
<?php
require_once 'includes/db.php';
require_once 'includes/functions.php';
update_last_activity($db);
check_activation_status();
require_once 'includes/header.php';
if (isset($_SESSION['logged_in']['user_level'])) {
?>
<div class="mein_inhalt">
<p>Der Inhalt in den Klammern kann nur von einem angemeldeten Nutzer aufgerufen werden.</p>
</div>
<?php
}
require_once 'includes/footer.php';
?>
<?php
require_once 'includes/db.php';
require_once 'includes/functions.php';
update_last_activity($db);
require_once 'includes/header.php';
if (isset($_SESSION['logged_in']['user_level'])
and $_SESSION['logged_in']['user_level'] == 'administrator') {
?>
<div class="mein_inhalt">
<p>Der Inhalt in den Klammern kann nur von einem Administrator aufgerufen werden.</p>
</div>
<?php
}
require_once 'includes/footer.php';
?>
if (isset($_SESSION['logged_in']['user_level'])) {
//Der Inhalt in den Klammern kann nur von einem angemeldeten Nutzer aufgerufen werden.
}
if (isset($_SESSION['logged_in']['user_level'])
and $_SESSION['logged_in']['user_level'] == 'administrator') {
//Der Inhalt in den Klammern kann nur von einem Administrator aufgerufen werden.
}
if (isset($_SESSION['logged_in']['user_level'])
and $_SESSION['logged_in']['user_level'] == 'administrator'
or $_SESSION['logged_in']['user_level'] == 'moderator') {
//Der Inhalt in den Klammern kann nur von einem Administrator oder Moderator aufgerufen werden.
}
5. Changelog
Update zur Version 2.5
06.04.2025
- Das Skript ist neu entwickelt worden, sodass der Changelog zurückgesetzt worden ist.