Installation des Fskripts V1.0
1. MySQL-Tabellen
Das Skript benötigt sechs Tabellen mit dem Namen users, login_protocol, categories, topics, posts 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 [categories]
- category_id [INT][10][AUTOINCREMENT]
- category_name [VARCHAR][150]
- category_description [VARCHAR][250]
1.4 Tabelle [topics]
- topic_id [INT][10][AUTOINCREMENT]
- topic_title [VARCHAR][150]
- topic_created [DATETIME]
- topic_updated [DATETIME]
- category_id [INT][10]
- user_id [INT][10]
- FOREIGN KEY (`category_id`) REFERENCES `categories` (`category_id`) ON DELETE CASCADE ON UPDATE CASCADE
- FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
1.5 Tabelle [posts]
- post_id [INT][10][AUTOINCREMENT]
- post_content [TEXT]
- post_created [DATETIME]
- user_profile_description [VARCHAR][500]
- topic_id [INT][10]
- user_id [INT][10]
- FOREIGN KEY (`topic_id`) REFERENCES `topics` (`topic_id`) ON DELETE CASCADE ON UPDATE CASCADE
- FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
1.6 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 `categories` (
`category_id` int(10) NOT NULL AUTO_INCREMENT,
`category_name` varchar(150) NOT NULL,
`category_description` varchar(250) NOT NULL,
PRIMARY KEY (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
CREATE TABLE `topics` (
`topic_id` int(10) NOT NULL AUTO_INCREMENT,
`topic_title` varchar(150) NOT NULL,
`topic_created` datetime NOT NULL,
`topic_updated` datetime NOT NULL,
`category_id` int(10) NOT NULL,
`user_id` int(10) NOT NULL,
PRIMARY KEY (`topic_id`),
KEY `category_id` (`category_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `topics_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`category_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `topics_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
CREATE TABLE `posts` (
`post_id` int(10) NOT NULL AUTO_INCREMENT,
`post_content` text NOT NULL,
`post_created` datetime NOT NULL,
`topic_id` int(10) NOT NULL,
`user_id` int(10) NOT NULL,
PRIMARY KEY (`post_id`),
KEY `topic_id` (`topic_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `posts_ibfk_1` FOREIGN KEY (`topic_id`) REFERENCES `topics` (`topic_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `posts_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) 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. BB-Code
Der Inhalt eines Beitrages kann mit dem integrierten BB-Code formatiert werden.
- [B]FETT[/B]
- [H]ÜBERSCHRIFT[/H]
- [A]ABSATZ[/A]
- [IMG_B]GROßES BILD[/IMG_B]
- [IMG_S]KLEINES BILD[/IMG_S]
- [LIST][LIST_ITEM]LISTE[/LIST_ITEM][/LIST]
5. Hinzufügen von neuen Seiten
Dem Skript können leicht neue Seiten hinzugefügt werden. Um eine neue Seite hinzuzufügen, müssen die notwendigen Dateien des Skripts 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';
?>
5. Changelog
- Es ist noch nichts geändert worden.