PHP - serverseitige Dynamik und Datenverarbeitung

PHP ist eine weit verbreitete und – im Gegensatz zu JavaScript – serverseitig interpretierte Skriptsprache, mit der sich dynamische Webseiten erzeugen, sowie Daten aus Benutzereingaben und Datenbanken verarbeiten lassen. Der Code wird auf dem Server ausgeführt und generiert dort HTML-Ausgaben, die an den Client gesendet werden. Der Client erhält also nur das Ergebnis der Skriptausführung, ohne dass es möglich ist herauszufinden, wie der eigentliche Code aussieht.
Wie bei JavaScript werde ich hier nicht auf die Grundlagen der Programmiersprache (Syntax, Struktur,...) eingehen, sondern mich auf die wichtigsten Web-Einsatzgebiete konzentrieren. Wer die Sprache grundlegend neu lernen möchte, dem sei z.B. das kompakte und anschauliche Einsteiger-Tutorial von Ionos empfohlen: "PHP lernen leicht gemacht"

Einbettung in HTML:

Ein PHP-Skript wird als "*.php"-Datei auf dem Webserver gespeichert. So weiss der Server, dass die Datei durch PHP interpretiert werden muss. Im Prinzip ist es eine gewöhnliche HTML-Seite in die PHP-Anweisungen eingebettet werden kann, und zwar folgendermassen:

<html>
...beliebiger HTML-Code...
<?php
...PHP-Anweisungen, z.B.: echo "Hallo, ich bin ein PHP-Skript!";...
?>
...beliebiger HTML-Code...
</html>

Im resultierenden HTML-File welcher dem Client-Browser ausgeliefert wird, ist vom PHP-Code (alles innerhalb von <?php und ?>) nichts zu sehen, ausser was explizit mit dem echo-Befehl als Text ausgegeben wird. Im Beispiel sieht der Source-Code der Webseite im Browser so aus:
<html>Hallo, ich bin ein PHP-Skript!</html>

PHP-Konfiguration und Systeminformationen anzeigen:

Ein nützlicher Code um anzeigen zu lassen ob auf dem Webserver PHP installiert ist, und wenn ja wie genau es konfiguriert ist mitsamt diversen Systeminformationen:
<?php phpinfo(); ?>
Vordefinierte Variablen:

In PHP werden Variablen grundsätzlich mit einem $ eingeleitet, also $Variablenname. Wichtig sind vor allem die vordefinierten Variablen. Das sind Arrays welche die serverseitige Datenverarbeitung erst ermöglichen. Die Wichtigsten:

  • $_SERVER: Informationen über Server und Ausführungsumgebung (z.B. $_SERVER['SERVER_NAME'] liefert den Hostnamen des Servers, auf dem das aktuelle Skript ausgeführt wird).
  • $_POST: Variablen welche via HTTP-POST-Methode über ein Formular übergeben worden sind (z.B. $_POST['Vorname'] liefert den Wert, welcher vom Benutzer ins Formular-Feld "Vorname" eingegeben wurde).
  • $_GET: Variablen, die dem aktuellen Skript mittels der URL-Parameter übergeben worden sind (z.B. $_GET['ort'] liefert "Bern", wenn das Skript "map.php" über http://beispiel.ch/map.php?ort=Bern aufgerufen wurde)
  • $_FILES: Elemente die vom aktuellen Skript via HTTP-POST-Methode hochgeladen wurden (z.B. $_FILES['bild']['name'] liefert "hans.jpg", wenn der Benutzer das Bild "hans.jpg" über das input-Feld "bild" hochgeladen hat)
  • $_SESSION: Enthält die Sessionsvariablen.
  • $_COOKIE: Variablen, die dem aktuellen Skript mittels HTTP-Cookies übergeben wurden (z.B. $_COOKIE['Benutzer'] liefert den Wert des davor gesetzten Cookies mit dem Namen "Benutzer").

Datenverarbeitungs-Methoden:

Variablen-Werte werden an ein PHP-Skript auf dem Server übermittelt (von einem Formular, GET-Variablen in der URL, durch ein Skript,...) und stehen dann als vordefinierte Variablen zur Verfügung. Was für Möglichkeiten stehen nun zur Verfügung diese Daten sinnvoll zu verarbeiten?
Die meisten PHP-Anwendungen benutzen eine oder mehrere der folgenden Varianten:

  • Ausgabe der Werte an die Webseite: Die Werte können per echo "Text"- oder print "Text"-Anweisung verarbeitet oder direkt an die Webseite ausgegeben werden. Das ermöglicht eine dynamische Erzeugung oder Manipulation von Webseiten-Elementen (HTML-, JavaScript-, CSS- oder SVG-Code). Als Beispiele haben wir ja schon die Erzeugung von SVG-Diagrammen aus Eingabe-Werten und die SVG-Server-Uhr aus Server-Variablen kennengelernt (siehe SVG-Anwendungen).
  • Mail verschicken: Dies ist sinnvoll bei Eingabe-Formularen bei der eine Nachricht oder Bestellung des Benutzers an den Betreiber der Webseite verschickt werden soll. Man erstellt eine Text-Variable (z.B. $str) und fügt die übermittelten Werte und allfällig zusätzlichen Text dort hinein. Dann kann man mit der mail()-PHP-Methode diesen Text per Mail verschicken:
    mail("Empfängermailadresse", "Betreff", $str, "From: Absendername <Absendermailadresse>");
  • Datei beschreiben: Sollen die Daten dauerhaft gespeichert werden, so kann man nebst einer Datenbank auch eine Text-Datei benutzen. Auch hier wird eine Text-Variable ($str) erstellt, in die die gewünschten Werte hineingeschrieben werden. Dieser Text kann dann via file_put_contents() in eine neue oder bereits bestehende Datei hineingeschrieben werden. Wird die Option "FILE_APPEND" gesetzt, so wird der Text an den schon bestehenden Text in der Datei angehängt, sonst wird die Datei komplett durch den neuen Text ersetzt. Entsprechend gibt es auch den Befehl file_get_contents("Dateiname") um den Text einer Datei einzulesen:
    file_put_contents("Dateiname", $str, FILE_APPEND);
  • In Datenbank suchen resp. einfügen: Es wird v.a. die frei zugängliche MySQL-Datenbank benutzt. Und für den DB-Zugriff dient die in PHP enthaltene "PHP Data Objects-Erweiterung" (PDO) als Schnittstelle. Dabei werden SQL-Befehle formuliert:

    <?php
    // Datenbankverbindung aufbauen / PDO-Objekt erstellen (Hostname ist "localhost" wenn DB auf dem gleichen Server)
    $dbh = new PDO ("mysql:host=Hostname; dbname=Datenbankname", "Benutzername", "Passwort");
    // DB-Abfrage über "query()" und SQL-Befehl "SELECT":
    $sth = $dbh->query ("SELECT Spaltenname FROM Tabellenname WHERE Spaltenname = 'Wert'");
    // DB-Aenderung über "exec()" und z.B. SQL-Befehl "INSERT" (Datensatz einfügen), "UPDATE" (Datensatz ändern) oder "DELETE" (Datensatz löschen):
    $dbh->exec ("INSERT INTO Tabellenname (Spaltenname1, Spaltenname2, Spaltenname3,..) VALUES (Wert1, Wert2, Wert3,..)");
    ?>

    z.B. query("SELECT Wohnort FROM Adressen WHERE Nachname = $_POST['Nachname']"); liefert den Wohnort (also den Wert in der Spalte "Wohnort") der Person mit dem per Formular übermittelten Nachnamen in der Adressen-Tabelle.
Insbesondere die Datenbank-Manipulationen bieten ein mächtiges Instrument für auch komplexere Applikationen. Natürlich gibt es viel mehr PHP-MySQL-Zugriffs-Möglichkeiten als die hier kurz erwähnten. Deshalb verweise ich gerne auf ausführliche Websites: Eine gute Uebersicht der wichtigen SQL-Befehle finden Sie z.B. auf Ionos: "SQL-Befehle". Und vertiefende Informationen zu MySQL und PDO generell finden Sie z.B. auch auf Ionos: "MySQL lernen leicht gemacht".