8. Unterrichtsblock

PHP Include & Require

Die include (oder require)-Anweisung nimmt den gesamten Text/Code/Markup, der in der angegebenen Datei vorhanden ist, und kopiert ihn in die Datei, die die include-Anweisung verwendet.

Das Einfügen von Dateien ist sehr nützlich, wenn man dasselbe PHP, HTML oder denselben Text auf mehreren Seiten einer Website einfügen möchte. Mit der include- oder require-Anweisung ist es auch möglich, den Inhalt einer PHP-Datei in eine andere PHP-Datei einzufügen (bevor der Server sie ausführt)

Die include- und require-Anweisungen sind identisch, außer bei einem Fehler:

  • require erzeugt einen schwerwiegenden Fehler (E_COMPILE_ERROR) und stoppt das Skript
  • include erzeugt nur eine Warnung (E_WARNING) und das Skript wird fortgesetzt

Anwendungsfelder:

  • Wenn man also möchte, dass die Ausführung fortgesetzt wird und Benutzern die Ausgabe angezeigt wird, selbst wenn die Include-Datei fehlt, verwendet man die Include-Anweisung.
  • Im Falle von FrameWork, CMS oder einer komplexen PHP-Anwendungscodierung verwendet man allerdings immer die require-Anweisung, um eine Schlüsseldatei in den Ausführungsablauf einzuschließen. Dadurch wird verhindert, dass die Sicherheit und Integrität der Anwendung gefährdet wird, falls eine Schlüsseldatei versehentlich fehlt.

Das Einbinden von Dateien spart viel Arbeit. Das bedeutet, dass man für alle Webseiten eine standardmäßige Kopf-, Fuß- oder Menüdatei erstellen kann. Wenn später der Header aktualisiert werden muss, muss man nur die Header-Include-Datei aktualisieren.

Syntax

include 'dateiname';

// oder

require 'dateiname';

Beispiel

Angenommen, wir haben eine Standard-Fußzeilendatei namens „footer.php“, die so aussieht:

<?php
echo "<p>Urheberrecht &copy; 2022-" . date("Y") . " webentwicklerkurs.de</p>";
?>

Um die Fußzeilendatei in eine Seite einzufügen, verwendet man die include-Anweisung:

<html>
 <body>
 
  <h1>Willkommen auf meiner Seite!</h1>
  <p>Etwas Text.</p>
  <p>Noch mehr Text.</p>
  <?php include 'footer.php';?>

 </body>
</html>

Aufgabe

Baue eine homepage.php mit folgenden Eigenschaften:

  • Menü mit Logo und einem Menülink zur Seite leistungen.php
  • Einem Lorem Ipsum Textblock und einer Überschrift „Startseite“
  • Einer Fußzeile zwei Menülinks zu impressum.php und Datenschutz.php
  • Anforderungen der Seiten (Homepage, Impressum, Datenschutz und Leistungen):
    • Alle Seiten sollen dasselbe Menü und dieselbe Fußzeile haben
    • Integriere diese über die include-Anweisung mittels header.php und footer.php
    • Inhalt leistungen.php: Ein Lorem Ipsum Textblock und einer Überschrift „Leistungen“
    • Inhalt impressum.php: Eine Lorem Ipsum Textblock und einer Überschrift „Impressum“
    • Inhalt datzenschutz.php: Eine Lorem Ipsum Textblock und einer Überschrift „Datenschutz“

PHP Cookies & Sessions

Cookies

Ein Cookie wird häufig verwendet, um einen Benutzer zu identifizieren. Ein Cookie ist eine kleine Datei, die der Server auf dem Computer des Benutzers einbettet. Jedes Mal, wenn derselbe Computer eine Seite mit einem Browser anfordert, sendet er auch das Cookie. Mit PHP kann man Cookie-Werte sowohl erstellen als auch abrufen.

Sessions (Sitzungen)

Eine Sitzung ist eine Möglichkeit, Informationen (in Variablen) zu speichern, die auf mehreren Unterseiten derselben Domain verwendet werden sollen.

Im Gegensatz zu einem Cookie werden die Informationen nicht auf dem Computer des Benutzers gespeichert.

Wenn man z. B. mit einer Anwendung am PC arbeitet, öffnen man diese, nimmt einige Änderungen vor und schließen sie anschließend wieder. Dies ähnelt einer Sitzung auf einer Webseite. Der eigene PC weiß jedoch, wer man ist. Er weiß, wann man die Anwendung startet und wann man sie beendet. Im Internet jedoch gibt es ein Problem: Der Webserver weiß nicht, wer man ist, oder was man tut, weil die HTTP-Adresse den Status nicht halten kann.

Sitzungsvariablen lösen dieses Problem, indem sie Benutzerinformationen speichern, die auf mehreren Seiten verwendet werden sollen (z. B. Benutzername, Lieblingsfarbe usw.). Standardmäßig bleiben Sitzungsvariablen bestehen, bis der Benutzer den Browser schließt.

Kurzgesagt: Sitzungsvariablen enthalten Informationen über einen einzelnen Benutzer und sind für alle Seiten in einer Web-Anwendung verfügbar.

Hinweis: Wenn man eine dauerhafte Speicherung der Daten benötigt, können diese Daten in einer Datenbank gespeichert werden .


Erstellung von Cookies mit PHP

Mit der Funktion setcookie() wird ein Cookie erstellt.

setcookie(name, value, expire, path, domain, secure, httponly);

Nur der Namensparameter ist erforderlich. Alle anderen Parameter sind optional.


PHP Cookie erstellen/abrufen

Das folgende Beispiel erstellt ein Cookie namens „nutzer“ mit dem Wert „Peter Maier“. Das Cookie läuft nach 30 Tagen ab (86400 * 30). Das „/“ bedeutet, dass das Cookie auf der gesamten Website verfügbar ist (ansonsten wählt man das gewünschte Verzeichnis aus).

Wir rufen dann den Wert des Cookies „nutzer“ ab (unter Verwendung der globalen Variable $_COOKIE). Wir verwenden auch die isset()Funktion, um festzustellen, ob das Cookie gesetzt wird:

<?php
$cookie_name = "nutzer";
$cookie_value = "Peter Maier";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 Tag
?>
<html>
<body>
  <?php
   if(!isset($_COOKIE[$cookie_name])) {
   echo "Der Cookie '" . $cookie_name . "' ist nicht gesetzt!";
   } else {
     echo "Der Cookie '" . $cookie_name . "' ist gesetzt!<br>";
     echo "Wert ist: " . $_COOKIE[$cookie_name];
     }
  ?>
</body>
</html>

Hinweis: Die setcookie()Funktion muss VOR dem <html>-Tag stehen.

Hinweis: Der Wert des Cookies wird beim Senden des Cookies automatisch URL-kodiert und beim Empfang automatisch dekodiert (um URL-Kodierung zu verhindern, verwenden man stattdessen setrawcookie()).



Änderung eines Cookie-Werts

Um ein Cookie zu ändern, setzt man das Cookie einfach (erneut) mit der setcookie()Funktion:

<?php
$cookie_name = "nutzer";
$cookie_value = "Martina Mooser";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
  echo "Der Cookie '" . $cookie_name . "' ist nicht gesetzt!";
} else {
  echo "Der Cookie '" . $cookie_name . "' ist gesetzt!<br>";
  echo "Wert ist: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>

Löschen eins Cookies

Um ein Cookie zu löschen, verwendet man die setcookie()Funktion mit Ablaufdatum in der Vergangenheit:

<?php
// Setzt die Ablaufzeit auf vor einer Stunde
setcookie("nutzer", "", time() - 3600);
?>
<html>
 <body>
  <?php
   echo "Cookie 'user' ist gelöscht.";
  ?>
 </body>
</html>

Überprüfen, ob Cookies aktiviert sind

Das folgende Beispiel erstellt ein kleines Skript, das überprüft, ob Cookies aktiviert sind. Man versucht zunächst, mit der Funktion setcookie() ein Test-Cookie zu erstellen und zählt dann die $_COOKIE Array-Variable:

<?php
setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
 <body>
  <?php
   if(count($_COOKIE) > 0) {
   echo "Cookies sind aktiviert.";
   } else {
    echo "Cookies sind deaktiviert.";
    }
  ?>
 </body>
</html>

Session (Sitzung)

Sitzungen sind eine Möglichkeit, Informationen (in Variablen) zu speichern, die auf mehreren Seiten verwendet werden sollen. Im Gegensatz zu einem Cookie werden die Informationen nicht auf dem Computer des Benutzers gespeichert.


Starten einer PHP-Session

Mit der Funktion session_start() wird eine Sitzung gestartet.
Sitzungsvariablen werden mit der globalen PHP-Variablen $_SESSION gesetzt.

Zuerst erstellen wir eine Seite mit dem Namen „demo_session1.php“ erstellen. Auf dieser Seite starten wir eine neue PHP-Session und setzen einige Session-Variablen:

<?php
// Starte die Sitzung
session_start();
?>
<!DOCTYPE html>
<html>
 <body>
  <?php
   // Setzen der Sitzungsvariablen
   $_SESSION["lieblingsfarbe"] = "Rot";
   $_SESSION["lieblingstier"] = "Katze";
   echo "Sitzungsvariablen wurden gesetzt.";
  ?>
 </body>
</html>

Hinweis: Die session_start()Funktion muss das allererste in einem Dokument sein. Vor allen HTML-Tags.


Werte der PHP-Sitzungsvariablen abrufen

Als nächstes erstellen wir eine weitere Seite namens „demo_session2.php“. Von dieser Seite aus greifen wir auf die Sitzungsinformationen zu, die wir auf der ersten Seite („demo_session1.php“) festgelegt haben.

Zu beachten ist, dass Sitzungsvariablen im gegensatz zu Cookies nicht einzeln an jede neue Seite übergeben werden, sondern aus der Sitzung abgerufen werden, die wir am Anfang jeder Seite öffnen ( session_start()).

Zu beachten ist auch, dass alle Session-Variablenwerte in der globalen $_SESSION-Variablen gespeichert werden:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
 <body>
  <?php
   // Ausgabe der Sitzungsvariablen, die auf der vorherigen Seite gesetzt wurden
   echo "Lieblingsfarbe ist " . $_SESSION["lieblingsfarbe"] . ".<br>";
   echo "Lieblingstier ist " . $_SESSION["lieblingstier"] . ".";
  ?>
 </body>
</html>

Eine andere Möglichkeit, alle Sitzungsvariablenwerte für eine Benutzersitzung anzuzeigen, besteht darin, den folgenden Code auszuführen:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
 <body>
  <?php
  print_r($_SESSION);
  ?>
 </body>
</html>

Wie funktioniert es? Woher weiß das Programm, dass ich es bin?

Die meisten Sitzungen legen einen Benutzerschlüssel auf dem Computer des Benutzers fest, der etwa so aussieht: 765487cf34ert8dede5a562e4f3a7e12. Wenn dann eine Sitzung auf einer anderen Seite geöffnet wird, durchsucht es den Computer nach einem Benutzerschlüssel. Wenn es eine Übereinstimmung gibt, greift es auf diese Sitzung zu, wenn nicht, startet es eine neue Sitzung.

Ändern einer PHP-Sitzungsvariable

Um eine Sitzungsvariable zu ändern, überschreibt man sie einfach:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
 <body>
  <?php
  // um eine Sitzungsvariable zu ändern, überschreibt man diese einfach
  $_SESSION["lieblingsfarbe"] = "Rot";
  print_r($_SESSION);
  ?>
 </body>
</html>

Zerstöre eine PHP-Sitzung

Um alle globalen Sitzungsvariablen zu entfernen und die Sitzung zu zerstören, verwenden Sie session_unset() and session_destroy():

<?php
session_start();
?>
<!DOCTYPE html>
<html>
 <body>
  <?php
   // Entferne alle Sitzungsvariablen
   session_unset();

   // Beende die Sitzung
   session_destroy();
  ?>
 </body>
</html>

Aufgabe

Baue o.g. Codes nach und erstelle eine Session auf einer Seite, die Informationen an die nächste Seite weitergibt

PHP Objektorientierte Programmierung (OOP)

Aufgabe

Recherchiere und Erkläre den Unterschied zwischen objektorientierter und prozeduraler Programmierung.

Übungsaufgaben

1. Aufgabe

Recherchiere weiter zur objektorientierten Programmierung in PHP
Recherchiere zu Klassen und Objekten