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]

  1. user_id [INT][10][AUTOINCREMENT]
  2. username [VARCHAR][30][UNIQUE KEY]
  3. user_password [CHAR][255]
  4. user_email [VARCHAR][50][UNIQUE KEY]
  5. user_level [VARCHAR][50]
  6. user_date [DATETIME]
  7. last_activity [DATETIME]

1.2 Tabelle [login_protocol]

  1. login_id [INT][10][AUTOINCREMENT]
  2. login_username [VARCHAR][30]
  3. login_attempt [TINYINT][1]
  4. login_at [DATETIME]

1.3 Tabelle [categories]

  1. category_id [INT][10][AUTOINCREMENT]
  2. category_name [VARCHAR][150]
  3. category_description [VARCHAR][250]

1.4 Tabelle [topics]

  1. topic_id [INT][10][AUTOINCREMENT]
  2. topic_title [VARCHAR][150]
  3. topic_created [DATETIME]
  4. topic_updated [DATETIME]
  5. category_id [INT][10]
  6. user_id [INT][10]
  7. FOREIGN KEY (`category_id`) REFERENCES `categories` (`category_id`) ON DELETE CASCADE ON UPDATE CASCADE
  8. FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE

1.5 Tabelle [posts]

  1. post_id [INT][10][AUTOINCREMENT]
  2. post_content [TEXT]
  3. post_created [DATETIME]
  4. user_profile_description [VARCHAR][500]
  5. topic_id [INT][10]
  6. user_id [INT][10]
  7. FOREIGN KEY (`topic_id`) REFERENCES `topics` (`topic_id`) ON DELETE CASCADE ON UPDATE CASCADE
  8. FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE

1.6 Tabelle [user_profiles]

  1. user_profile_id [INT][10][AUTOINCREMENT]
  2. user_profile_image [VARCHAR][250]
  3. user_profile_location [VARCHAR][100]
  4. user_profile_description [VARCHAR][500]
  5. user_id [INT][10]
  6. 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.

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.

  1. require_once 'includes/db.php';
  2. require_once 'includes/functions.php';
  3. update_last_activity($db);
  4. check_activation_status();
  5. require_once 'includes/header.php';
  6. 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