Tutorial - MySQL Webseitenschutz von Webbausteine.de - nur für fortgeschrittene Benutzer geeignet - Tutorial für Bildschutz auf der “Sicheren Seite 1

Ladet etwas neuere Skripte in meinem Download-Archiv als “2021-12-27-mysql_webseitenschutz.zip” herunter. Der Einbau bleibt gleich.

    Tutorial und verwendete Skripte vom: 02.10.2016

Ladet Euch zunächst die Skripte bei Werner-Zenk.de herunter. Ihr erhaltet eine Datei “mysql_webseitenschutz.zip”, die Ihr bitte entpackt. Nach dem Entpacken findet Ihr ein Verzeichnis:

  • mysql_webseitenschutz

mit allen benötigten Dateien. Lest Euch aufmerksam die Datei lies-micht.txt durch und befolgt genau diese Schritte in dieser Reihenfolge.

Voraussetzung ist eine MySQL Datenbank, die Ihr lediglich bei Eurem Provider als neue Datenbank einrichten müsst und PHP 5.4 (oder höher). Sämtliche benötigten Tabellen erstellt das Skript “installation.php” von Webbausteine.de selbstständig.

Gewisse Kenntnisse in HTML, CSS, JavaScript und PHP werden nur notwendig, wenn Ihr das Erscheinungsbild dieser Skripte ändern und an Eure Wünsche anpassen wollt, so wie ich es hier bei dem direkten Einbau in NOF, mit einem Beispiel des einzubauenden Codes,  getan habe.

Öffnet die Datei

  • einstellungen.php (im Verzeichnis “einstellungen”)

mit z.B. Eurem Windows-Editor. Dort tragt Ihr dann Eure, bei der Erstellung der Datenbank vom Server zur Verfügung gestellten, Verbindungsdaten gleich am Anfang des Skripts ein. Das sieht dann ungefähr so aus:

    // Zugangsdaten zur Datenbank
    // Datenbank-Host und Datenbank-Name
    $SERVER = "mysql:host=db123725987.db.1and1.com;
              dbname=db123725987";
    $BENUTZER = "dbo123725987"; // Datenbank-User (Benutzername)
    $PASSWORT = "DeinPasswortHierEintragen"; // Datenbank-Passwort

In dieser Datei tragt Ihr auch Euren Administrator-Namen und das dazugehörige Passwort  ein.

Es stehen noch viele weitere Einstellung zur Verfügung, wie z.B. ob die Benutzer sich mittels Bestätigung des zugesendeten Links freischalten können oder ob dies nur der Administrator tun soll, die aber alle gut kommentiert und daher selbsterklärend sind.

Jetzt kopiert Ihr sämtliche Dateien aus dem Verzeichnis “mysql_webseitenschutz” mit Eurem FTP-Programm direkt auf Euren Server in ein Verzeichnis Eurer Wahl. Ich habe das hier mal “Seitenschutz” genannt.

Als nächstes ruft Ihr in Eurem Browser einmalig das Skript zur Installation der Datenbank auf:

  • installation.php

also z.B.:

www.DeineDomain.de/Seitenschutz/installation.php. Dieses Skript solltet Ihr, nach der Installation, auf dem Server wieder löschen.

Nun seid Ihr bereits fertig und könnt zum Testen mal einige Benutzer registrieren.

Einen Link zur Verwaltung für den Administrator, findet Ihr auf der gesicherten Seite “hauptseite.php”, nachdem Ihr Euch mit Euren Admin-Zugangsdaten angemeldet habt. Dieser Link ist ausschließlich vom Administrator zu sehen. Dort könnt Ihr Benutzer z.B. freischalten, falls Ihr eingestellt habt, dass nur der Administrator Benutzer freischalten darf. Hier könnt Ihr auch Benutzer sperren oder löschen.

Nun könnt Ihr entweder mit einem direktem Link auf die Startseite, also z.B.:

www.DeineDomain.de/Seitenschutz/index.php

oder auf diese Seite mittels Inlineframe verlinken.

Hier eine Ansicht der geschützten “Hauptseite” vom Skript, auf der nur für den Administrator ein Link zur Benutzerverwaltung zu sehen ist. Auf den geschützten Seiten wird eine individuelle Begrüßung durch den jeweiligen Benutzernamen angezeigt.

Sichere-Seite

Hier eine Ansicht der Benutzerverwaltung für den Administrator (hier noch ohne irgendwelche registrierten Benutzer).

Verwaltung

 

Direkter Einbau in NOF:

Der direkte Einbau in NOF ist nur etwas für fortgeschrittene Benutzer, die sich bereits sehr gut in PHP und CSS auskennen. Ich habe die Skripte hier direkt in meine NOF-Seiten eingebunden und verzichte vorerst auf eine noch detailliertere Erklärung, da diese sehr umfangreich werden würde.

Für diejenigen, die es trotzdem versuchen wollen, hier einige Tipps - alle NOF-Seiten müssen natürlich auf die Datei-Erweiterung .php umgestellt werden:

  • Das Projekt muss auf die Publizierungs-StrukturUnstrukturiert” umgestellt werden, damit alle relativen Links in den Skripten unverändert bleiben können. Der Zeichensatz muss auf UTF-8 eingestellt sein.

     
  • Alle der PHP-Seiten vom Skript müssen in NOF ganz genauso heißen wie jene der Skripte, da diese dann die im Stammverzeichnis befindlichen Skripte von Webbausteine.de überschreiben sollen und müssen.

     
  • Öffnet dann jede dieser Seiten - dies sind im Einzelnen die Seiten:
     
    • anmeldung.php
    • bedingungen.htm
    • hauptseite.php
    • index.php
    • register.php
       
    • und guckt genau, was am Beginn der Seite steht (also noch vor <!DOCTYPE html>), fügt es bei NOF in die HTML des Layouts ganz oben (keine Leerzeile lassen) ein.
       
    •  und was für <style> Anweisungen im <head> der Seite stehen, die auch bei NOF “Zwischen Head Tags” des Layouts gehören
       
    • und alles, was zwischen den <body> Tags steht, gehört dann in den HTML-Code Editor eines Textfeldes, was also dann den Inhalt Eurer Seite darstellt. Dies ist der PHP-Code, der zwischen und inklusive der Tags <?php und dem schließenden ?> steht.
       
    • achtet auch auf zusätzliche Formularfelder, die zwischen den Tags <form> und </form> stehen, sowie eventuelle Hinweistexte und Links, die mit in den HTML-Code Editor des Textfeldes eingefügt werden müssen.

Jede später zu schützende Seite muss dann also lediglich am “Beginn der Seite” (keine Leerzeile lassen) diesen PHP-Code eingefügt bekommen:

<?php
// Webseitenschutz
// Diesen Code für alle Seiten benutzen
// die geschützt werden sollen.
session_start();
if (!isset($_SESSION["login"])) {
 header("Location: anmeldung.php");
 exit;
}
?>

 

Beispiel für den Einbau in NOF von der Seite anmeldung.php - entsprechend macht Ihr das mit allen anderen Seiten ebenso.

> Layout markieren > Fenster “Layout-Eigenschaften” > Button “HTML” > erster Button (links) “Beginn der Seite” (keine Leerzeile lassen)

<?php
/*
    MySQL-Webseitenschutz - Anmeldung/Abmeldung
    www.webbausteine.de
*/

session_start();
include "einstellungen/einstellungen.php";

if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["benutzername"] != "") {

 // Anmeldeversuche
 if (!isset($_SESSION["versuche"])) {
  $_SESSION["versuche"] = 1;
 }
 else {
  $_SESSION["versuche"]++;
 }

 // Name, Passwort und Anmeldeversuche überprüfen
 $_POST["benutzername"] = trim($_POST["benutzername"]);
 $_POST["passwort"] = trim($_POST["passwort"]);
 $select = $VERBINDUNG->prepare("SELECT `benutzername`, `passwort`, `sperre` FROM `" . $TBL_NAME . "` WHERE `benutzername` =
 :benutzername");
 $select->bindValue(':benutzername', $_POST["benutzername"]);
 $select->execute();
 $reg = $select->fetchAll(PDO::FETCH_OBJ);
 if (count($reg) == 1) {
  if ($reg[0]->benutzername == $_POST["benutzername"] &&
      $reg[0]->passwort == (md5($_POST["passwort"]) . substr($SALT, 0, 24)) &&
      $reg[0]->sperre == "1" &&
      $_SESSION["versuche"] <= $ANMELDEVERSUCHE) {
   $_SESSION["login"] = true;
   $_SESSION["benutzer"] = $reg[0]->benutzername;
   $_SESSION["Admin"] = $reg[0]->benutzername == $ADMIN_NAME ? true : false;
   unset($_SESSION["versuche"]);
   // Weiterleitung zur geschützten Seite
   header("Location: hauptseite.php");
   exit;
  }
  else {
   $fehler = true;
  }
 }
}

// Abmeldung
if (isset($_SESSION["login"]) && isset($_GET["abmeldung"])) {
 // Letzter Besuch und Onlinestatus eintragen
 $VERBINDUNG->query("UPDATE `" . $TBL_NAME . "` SET `letzterbesuch` = NOW() WHERE `benutzername` = '" . $_SESSION["benutzer"] .
 "'");
 session_destroy();
 header("Location: anmeldung.php?abmeldung_ok");
 exit;
}
?>

> Layout markieren > Fenster “Layout-Eigenschaften” > Button “HTML” > zweiter Button (von links) “Zwischen Head Tags” (die Style-Anweisung)

<style>
  p.ok {
   color: #00B900;
  }
  p.fehler {
   color: #EE0000;
  }
  span.pflichtfeld {
   color: #EE0000;
  }
</style>

> Layout markieren > 1. Textfeld aufziehen (Cursor blink) > mittlere Button im Fenster “Text-Eigenschaften” (Textfeld) > Button “HTML”

Für das Eingabe-Formular in den HTML-Code Editor einfügen:

<form action="anmeldung.php" method="post">
   <p>
    <label>Benutzername: <span class="pflichtfeld">&#10034;</span> <br>
    <input type="text" name="benutzername" value="<?php echo isset($_POST['benutzername']) ? $_POST['benutzername'] : ""; ?>" size="40" maxlength="35" required="required" autofocus="autofocus"></label>
   </p>
   <p>
    <label>Passwort: <span class="pflichtfeld">&#10034;</span> <br>
    <input type="password" name="passwort" size="25" required="required"></label>
    <input type="submit" value="Anmelden">
   </p>
</form>

> Layout markieren > 2. Textfeld darunter aufziehen (Cursor blink) > mittlere Button im Fenster “Text-Eigenschaften” (Textfeld) > Button “HTML”

Für den Hinweis-Text in den HTML-Code Editor einfügen:

<?php
if (isset($_GET["abmeldung_ok"])) {
 echo '<p class="ok">&#10004; Du wurdest erfolgreich abgemeldet.</p>';
}
if (isset($fehler) && $_SESSION["versuche"] < $ANMELDEVERSUCHE) {
 echo '<p class="fehler">&#10008; Der Benutzername oder das Passwort ist falsch!<br>
         Anmeldeversuch ' . $_SESSION["versuche"] . ' von ' . $ANMELDEVERSUCHE . '.</p>';
}
if (isset($_SESSION["versuche"])) {
 if ($_SESSION["versuche"] >= $ANMELDEVERSUCHE) {
  echo '<p class="fehler">&#10008; Es stehen Dir keine weiteren Anmeldeversuche zur Verfügung!</p>';
 }
}
?>

Viel Erfolg!

Tutorials von Thomas Frei-Herrmann