Tutorial PHP-Webseitenschutz ohne Datenbank

von Werner-Zenk.de - Version vom 17.11.2016

Diese einfachen PHP-Skripte ermöglichen den Passwortschutz für Seiten Eures Projektes. Es können beliebig viele Benutzer mit den dazugehörigen Passwörten im Skript eingetragen werden. Dies ist eine sehr einfach Art ausgewählte Seiten zu schützen.

Bitte ladet Euch die etwas neueren Skripte in meinem Download-Archiv als “2018-06-12-php_webseitenschutz.zip” herunter und entpackt die ZIP-Datei “php_webseitenschutz.zip”. Ihr erhaltet ein Verzeichnis:

  • php_webseitenschutz

Öffnet das Verzeichnis “php_webseitenschutz” und Ihr findet folgende Dateien und Verzeichnisse:

  • anmeldung.php - die Skripte dieser Datei habe ich hier direkt in NOF auf meiner Startseite eingebaut.
  • geheim.php - dies ist nur eine Beispielseite für eine geschützte Seite.
     
  • benutzer - dieses Verzeichnis enthält folgende Dateien:
    • .htaccess - eine .htaccess-Datei, die den Zugriff auf den Inhalt dieses Verzeichnisses schützt.
    • benutzer.php - in dieser Datei tragt Ihr alle Benutzer mit ihren Passwörtern ein.

 

Ich beschreibe hier den Einbau in NOF. Voraussetzung ist PHP 5.x oder höher am Server.

Bitte kopiert das Verzeichnis “benutzer” mit dem FTP-Programm in z.B. das Stammverzeichnis Eures Projektes (dort wo sich die Startseite “index” befindet).

Erstellt eine Seite in NOF, die Ihr “anmeldung” nennt und stellt die Dateierweiterung auf .php

> Bearbeiten > Benutzerdefinierte Namen > Dateierweiterung > .php wählen

 

Kopiert aus der Datei “anmeldung.php” diesen PHP-Teil und fügt ihn in die HTML Eurer Seite “anmeldung” am “Beginn der Seite” ein.

> Layout markieren > Fenster “Layout-Eigenschaften” > Button “HTML” > “Beginn der Seite” (also ganz oben, keine Leerzeile lassen)

<?php
/*
 * PHP-Webseitenschutz - anmeldung.php
 * - https://werner-zenk.de
 */

session_start();
include "benutzer/benutzer.php"; // Gegebenenfalls muss diese hier angepasst werden!

// Anmeldung überprüfen
if (isset($_POST["anmeldung"])) {
 if (isset($BENUTZER_PASS[$_POST["name"]]) &&
     $BENUTZER_PASS[$_POST["name"]] === $_POST["passwort"]) {
     session_regenerate_id();
   $_SESSION["benutzername"] = $_POST["name"];

   // Zur "geschützten"-Seite nach der Anmeldung weiterleiten.
   header("Location: ./Sichere-Seite-1/sichere-seite-1.php"); // Gegebenenfalls muss diese hier angepasst werden!
 }
}

// Abmeldung
if (isset($_GET["abmeldung"])) {
  // Session und Cookies löschen
 unset($_SESSION["benutzername"]);
  $_SESSION = [];
  if (ini_get("session.use_cookies")) {
   $params = session_get_cookie_params();
   setcookie(session_name(), '', time() - 42000, $params["path"],
    $params["domain"], $params["secure"], $params["httponly"]);
  }
  session_destroy();
   header("Location: anmeldung.php");
}
?>

Bitte achtet auf die korrekte relative Pfadangabe bei allen Links in diesem Skript, die ich oben blau markiert habe. Bei mir liegt also z.B. das Verzeichnis “benutzer” im gleichen Verzeichnis wie meine Startseite “anmeldung”:

  • benutzer/benutzer.php

und ich leite auf meine Seite /Sichere-Seite-1/sichere-seite-1.php nach erfolgreicher Anmledung weiter. Im Falle einer falschen Passwort-Eingabe wird auf die Seite “anmeldung.php” zurückgekehrt.

Für die Anmeldung selbst zieht Ihr Euch ein Textfeld an beliebiger Stelle der Seite “anmeldung” auf und fügt das Formular unten ein:

> Textfeld doppelklicken (Cursor blinkt) > Fenster “Text-Eigenschaften” > mittlere Button oben “Textfeld” > Button “HTML” > Code einfügen

                <form method="post">
                 <p>
                  <label>Benutzer:
                  <input type="text" name="name" required="required" autocomplete="username" autofocus="autofocus">
                  </label>
                 </p>
                 <p>
                  <label>Passwort:
                  <input type="password" name="passwort" required="required" autocomplete="current-password">
                  </label>
                 </p>
                 <p>
                  <input type="submit" name="anmeldung" value="Anmelden">
                 </p>
                </form>

Nun könnt Ihr mit dem Code unten beliebige Seiten Eures Projektes schützen, die auch die Dateierweiterung .php haben müssen, indem Ihr diesen Code auf jeder der zu schützenden Seiten in die HTML des Layouts eintragt.

> Layout markieren > Fenster “Layout-Eigenschaften” > Button “HTML” > “Beginn der Seite” (also ganz oben, keine Leerzeile lassen)

<?php
/*
 * PHP-Webseitenschutz - geheim.php
 * - https://werner-zenk.de
 */

// Dieses Script muss an den Anfang jeder Seite die geschützt werden soll.
session_start();
if (!isset($_SESSION["benutzername"])) {
 header("Location: ../anmeldung.php"); // Zur Anmeldung weiterleiten, bitte Pfad anpassen
 exit;
}
?>

Bitte achtet auch hier wieder auf die korrekte relative Pfadangabe bei dem Link in diesem Skript, die ich oben blau markiert habe. Hier wird auf die Seite “anmledung” umgeleitet, wenn der Benutzer sich noch nicht angemeldet hat.

Weiterhin könnt Ihr eine Begrüßung des eingeloggten Benutzers mit seinem Benutzernamen auf der Seite in die HTML eines Textfeldes einbauen.

> Textfeld doppelklicken (Cursor blinkt) > Fenster “Text-Eigenschaften” > mittlere Button oben “Textfeld” > Button “HTML” > Code einfügen

<?php echo $_SESSION["benutzername"]; ?>

Zum Abmelden des eingeloggten Benutzers setzt Ihr diesen Code auf jeder geschützten Seite in die HTML eines Textfeldes ein.

> Textfeld doppelklicken (Cursor blinkt) > Fenster “Text-Eigenschaften” > mittlere Button oben “Textfeld” > Button “HTML” > Code einfügen

<a href="../anmeldung.php?abmeldung">Abmelden</a>

Bitte achtet auch hier wieder auf die korrekte relative Pfadangabe bei dem Link in diesem Skript, die ich oben blau markiert habe. Hier wird auf die Seite “anmledung” verlinkt, wenn der Benutzer sich abgemeldet hat.

Bei der Publizierungs-Struktur nach “Asset Typ” kopiert Ihr das Verzeichnis “benutzer” direkt in das NOF-Verzeichnis “html” und lasst alle Pfadangaben, wie diese in den Original-Skripten sind, bestehen. Ihr müsst dann eventuell nur die Seitennamen anpassen. Hier meine Beispiel-Seite.

Viel Spaß!

Tutorials von Thomas Frei-Herrmann