2189414

Mit diesem Kurs gelingt der PHP-Einstieg

26.08.2016 | 14:14 Uhr |

Die Scriptsprache PHP stellt die Basis für viele dynamische Webseiten und Webanwendungen dar. In diesem Workshop zeigen wir Ihnen anhand praxisnaher Beispiele, wie Sie den Einstieg meistern.

Im Dezember 2015 wurde die siebte Version der erfolgreichen Scriptsprache vorgestellt. PHP ist ein zentraler Bestandteil der typischen Lamp-Umgebung mit Linux, Apache, My SQL und PHP. Im Zusammenspiel mit dem Apache-Server und der My-SQL-Datenbank kann sie ihre Stärken ausspielen. Bei PHP wird der Programmcode immer auf dem Server verarbeitet und nur die Ergebnisse an den Client übertragen. PHP7 wurde in dieser Richtung weiter optimiert und hat im Vergleich zum Vorgänger PHP5 eine um bis zu 30 Prozent schnellere Ausführungszeit.

Anders als bei HTML, CSS und Javascript benötigen Sie für die Ausführung von PHP einen Webserver mit PHP-Unterstützung. Am häufigsten kommt an dieser Stelle der Apache-Webserver zum Einsatz. Der lässt sich auch im heimischen Netz auf einem Linux-Rechner installieren. Näheres dazu erfahren Sie unter anderem im Artikel „HTML-Crashkurs“ , der sich generell als Ergänzung zu diesem Beitrag anbietet. Wir gehen hier aber davon aus, dass Sie Ihre Homepage durch PHP dynamischer und attraktiver machen wollen. Auf der Homepage können Sie eine vollwertige PHP-Unterstützung mit den aktuellsten Bibliotheken voraussetzen.

1. Formularabfragen und Auswertungen mit PHP

Die folgenden Beispiele zeigen häufige und typische Aufgaben, die PHP erledigen kann. Insofern handelt es sich bei diesem Artikel um einen „Workshop“ im Wortsinn: Erst das aktive Experimentieren mit diesen PHP-Dateien verschafft den wesentlichen Erkenntnisgewinn, die Erläuterungen können dies nur kommentierend begleiten.

Das Formular wird durch einen „form“-Tag dargestellt („bsp1.html“). Zwei Variablen besorgen die Weitergabe der Eingabe an ein per „action“ angefordertes PHP-Script.
Vergrößern Das Formular wird durch einen „form“-Tag dargestellt („bsp1.html“). Zwei Variablen besorgen die Weitergabe der Eingabe an ein per „action“ angefordertes PHP-Script.

Das Beispiel zeigt, wie Sie mit PHP ein Formular darstellen, die Eingaben abfragen und dann weiterverarbeiten. Die Aufgaben werden dabei auf zwei Dateien aufgeteilt: Die Darstellung des Formulars findet innerhalb einer HTML-Seite statt, die Ausgabe in einer PHP-Datei. Die passenden Scripts finden Sie in den Dateien „bsp1.html“ und „bsp1.php“. Der wesentliche Codeblock in der HTML-Datei lautet so:

<form action="bsp1.php" method="get">
Name: <input type="text" name="dein_name"><br>
E-mail: <input type="text" name="mail"><br>
<input type="submit">
</form>

Für die Abfrage der Formulardaten nutzen wir ein „form“-Element. Die Verknüpfung mit der PHP-Webseite findet über das Attribut „action“ statt. Weisen Sie den einzelnen „input“-Feldern über das Attribut „name“ immer einen eindeutigen Bezeichner zu. Diesen nutzen Sie anschließend im PHP-Script für die Ausgabe der Ergebnisse. Innerhalb des Beispielformulars gibt es die beiden Felder „name“ und „mail“. Dabei handelt es sich um Textfelder. Die Übertragung der Felder an das PHP-Script geschieht mit dem Drücken des „Senden“-Schaltknopfs. Damit stehen die Werte aus den beiden Textfeldern für die Weiterverarbeitung im PHP-Script zur Verfügung. Der Zugriff funktioniert über die zuvor definierten Variablen „dein_name“ und „mail“.

Werte über ein PHP-Script ausgeben: Am Beispiel der Datei „bsp1.php“ sehen Sie, dass eine PHP-Datei wie eine HTML-Datei aussehen kann. Der PHP-Teil ist in den „body“-Bereich der HTML-Seite integriert. Das Signal für den PHP-Interpreter ist immer dies:

<?php

Ab diesem Punkt beginnt der PHP-Code, beendet wird er mit „?>“. Danach kann es mit HTML-Tags weitergehen. Für die Ausgabe wird der Befehl „echo“ verwendet, der die Variable „dein_name“ und „mail“ ausgibt. Den Inhalt der Variablen ermittelt PHP mit dem Befehl „$_GET["Variable"]“. Konkret sieht das dann so aus:

Willkommen <?php echo $_GET["dein_name"]; ?><br>
Deine E-Mail Adresse lautet: <?php echo $_GET["mail"]; ?>

Zusätzlich wird noch eine zweite Zeile ausgegeben, in welcher die zuvor eingegebene E-Mail-Adresse (Variable „mail“) gespeichert ist.

Das Script („bsp1.php“) hat die Variablen übernommen und gibt sie mit dem Echo-Befehl wieder aus.
Vergrößern Das Script („bsp1.php“) hat die Variablen übernommen und gibt sie mit dem Echo-Befehl wieder aus.

Damit haben Sie Ihr erstes Programm erfolgreich geschrieben, können es auf Ihren Webserver kopieren und testen. Wenn sich der Webserver auf dem gleichen Computer befindet wie der Browser, mit dem Sie darauf zugreifen, lautet die URL „http://localhost/[Pfad]/bsp1.html“. Ansonsten verwenden Sie die den DNS-Namen des Webservers.

Lese-Tipp: Die 10 wichtigsten Linux-Befehle für Netzwerk und Internet

2. Vollständigkeit der Eingaben prüfen

Das nächste Beispiel baut das sehr einfache Grundgerüst aus Punkt 1 aus und überprüft die korrekte Eingabe in das Textfeld. Hier soll kontrolliert werden, ob in den beiden Feldern ein Wert ankommt. Damit Fehler gut sichtbar werden, definieren Sie am besten ein Stylesheet, mit dem Sie fehlende Angaben optisch hervorheben können. Dies geschieht im Beispiel über das kleine Stylesheet „fehler“, welches die angezeigte Schrift in roter Farbe formatiert.

<style>
.fehler {color: #FF0000;}
</style>

Das Script „bsp2.php“ kontrolliert, ob die Pflichtfelder tatsächlich ausgefüllt wurden.
Vergrößern Das Script „bsp2.php“ kontrolliert, ob die Pflichtfelder tatsächlich ausgefüllt wurden.

Im HTML-Teil wird das Formular mit den zwei Eingabefeldern aufgebaut inklusive den Funktionen, die eine Fehlermeldung ausgeben werden. Das Stylesheet „fehler“ kommt bei der Ausgabe zum Einsatz:

<h2>Überprüfe Deine Eingabe</h2>
<p><span class="fehler">* Pflichtfeld</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<span class="fehler">* <?php echo $fehler_Name;?></span>
<br><br>
E-mail: [analog…] <input type="submit" name="submit" value="Eingabe übertragen">
</form>

Nachdem Sie das Formular definiert haben, können Sie sich dem eigentlichen PHP-Programmcode zuwenden. Innerhalb des Formulars gibt es wieder zwei Felder für die Eingabe des Namens und der E-Mail-Adresse. Wenn eines oder beide Felder leer sind, dann soll eine Fehlermeldung angezeigt werden. Für die Verarbeitung der Werte benötigen Sie jeweils zwei Variablen: eine für die Speicherung des Werts und eine zweite für die Hinterlegung des Fehlerzustands:

<?php
//Initialisierung der Variablen
$fehler_Name = $fehler_Mail = ";
$name = $mail = "";

Als Nächstes überprüfen wir mit einer If-Bedingung, ob die Felder „name“ und „mail“ ausgefüllt sind:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$fehler_Name = "Bitte geben Sie Ihren Namen ein";
} else {
$name = dateneingabe_testen($_POST["name"]);
}

Wenn die Variable „name“ leer ist (Funktion „empty“), tritt die erste Aktion in Kraft und der Fehlervariablen wird ein Text zugewiesen. Falls das Feld einen Wert enthält, dann wird der Variablen „name“ die Eingabe des Benutzers zugewiesen und die Funktion „dateneingabe_testen“ kommt zum Einsatz:

function dateneingabe_testen($daten_eingabe) {
$daten_eingabe = trim($daten_eingabe);
$daten_eingabe = stripslashes($daten_eingabe);
$daten_eingabe = htmlspecialchars($daten_eingabe);
return $daten_eingabe;
}
?>

Es empfiehlt sich immer wie angegeben, die vom Anwender eingegebenen Zeichenketten zu „reinigen“: Hier entfernt die Funktion „trim()“ links und rechts Leerzeichen, „stripslashes()“ entfernt eventuelle Backslashes aus der Zeichenkette und „htmlspecialchars()“ wandelt vordefinierte Zeichen in die entsprechenden HTML-Zeichen um. Am Ende wird die geputzte Zeichenkette mit „return“ wieder an die Hauptroutine zurückgegeben.

Für das Feld „mail“ unseres Beispiels erfolgt die analoge Prüfung.

Wurden die Pflichtfelder ordnungsgemäß ausgefüllt, gibt das Script die Inhalte aus.
Vergrößern Wurden die Pflichtfelder ordnungsgemäß ausgefüllt, gibt das Script die Inhalte aus.

Ergebnis ausgeben: Falls die Felder ausgefüllt wurden, wird am Ende das Ergebnis ausgegeben. An dieser Stelle kommt wieder ein „If“ zum Einsatz:

<?php
if ( $name <> "" and $mail <> "" ) {
echo "<h2>Dies war Ihre Eingabe:</h2>";
echo $name;
echo "<br>";
echo $mail;
echo "<br>";
}
?>

3. PHP im Umgang mit der Zeit

PHP hat verschiedene Standardfunktionen im Repertoire, um Datums- und Zeitangaben zu interpretieren. Das folgende Beispiel „bsp3.php“ zeigt, wie Sie diese für Berechnungen nutzen. Im folgenden Programmcode wird als Ausgangstermin einer Terminreihe der kommende Samstag angenommen. Die Funktion „strtotime()“ wandelt den Wochentag in ein Datum um. Endtermin soll der Samstag in drei Wochen sein, der ebenfalls mit „strtotime()“ ermittelt wird:

<?php
$startdatum=strtotime("Saturday");
$endedatum=strtotime("+3 weeks",$startdatum);

„Saturday“ entspricht dem nächsten Samstag, „+3 weeks“ ist das Datum von heute ab in drei Wochen. Als zweiten Parameter können Sie noch einen alternativen Bezugspunkt angeben, falls Sie die Berechnung nicht vom heutigen Tag an beginnen möchten.

Das PHP-Script nutzt eingebaute Funktionen, um periodische Termine zu ermitteln („bsp3.php“).
Vergrößern Das PHP-Script nutzt eingebaute Funktionen, um periodische Termine zu ermitteln („bsp3.php“).

In einer „While“-Schleife werden anschließend, startend mit dem ermittelten Samstag, alle Termine der Reihe nach ausgegeben. In diesem Beispiel soll ab diesem Zeitpunkt alle drei Tage ein Meeting stattfinden, was der Parameter „+3 days“ erledigt:

while ($startdatum < $endedatum)
{
echo date("d M", $startdatum),"<br>";
$startdatum = strtotime("+3 days", $startdatum);
}
?>

While zählt die einzelnen Termine solange auf, bis das Enddatum erreicht ist.

Lese-Tipp: Die richtige Linux-Distribution für Einsteiger

4. Den Inhalt einer Datei auslesen

Um den Inhalt einer Datei auszulesen, auszuwerten oder dem Webbenutzer anzuzeigen, sind folgende PHP-Funktionen unerlässlich: „fopen()“ öffnet eine Datei, „fread()“ schreibt den Inhalt in eine Variable, „fclose()“ schließt die Datei wieder:

<?php
$meinedatei = fopen("fussball.txt", "r") or die("Datei kann nicht geöffnet werden!");
echo fread($meinedatei,filesize("fussball.txt"));
fclose($meinedatei);
?>

Danach kann der Inhalt über die Variable („$meinedatei“) einfach ausgegeben oder weiterverarbeitet werden.

Um die Zeilenumbrüche korrekt abzubilden, ist mehr Scriptaufwand (bsp4a.php) erforderlich.
Vergrößern Um die Zeilenumbrüche korrekt abzubilden, ist mehr Scriptaufwand (bsp4a.php) erforderlich.
Oben das schlichte Ergebnis, unten PHP-Code, um diese Textdatei zu erstellen („bsp4b.php“).
Vergrößern Oben das schlichte Ergebnis, unten PHP-Code, um diese Textdatei zu erstellen („bsp4b.php“).
PHP liest die Dateien auf dem Webserver ein und zeigt („bsp4c.php“) die enthaltenen Dateien als Links.
Vergrößern PHP liest die Dateien auf dem Webserver ein und zeigt („bsp4c.php“) die enthaltenen Dateien als Links.

Die Scriptbeispiele „bsp4.php“ und „bsp4a.php“ zeigen zwei einfache Varianten mit „echo“. Dabei löst die zweite Variante ein typisches Problem, das die „bsp4.php“ exemplarisch demonstriert. Hier sind die Zeilen der Ausgangsdatei nämlich ohne Zeilenumbruch wiedergegeben. Das zweite Script macht es besser, indem es nach jeder Zeile einen Umbruch mittels HTML-Tag einfügt. Dazu ist jedoch ein anderer Weg des Zugriffs notwendig: Wenn Sie Datei zeilenweise einlesen, müssen Sie das Ende der Datei ermitteln. Solange dies nicht erreicht ist, geht es weiter zur nächsten Zeile:

<?php
$meinedatei = fopen("fussball.txt", "r") or die("Datei kann nicht geöffnet werden!");
while(!feof($meinedatei)) {
echo fgets($meinedatei),
"<BR>";
}
fclose($meinedatei);

Die Funktion „feof()“ ermittelt das Dateiende und gibt „false“ zurück, solange es nicht erreicht ist. Dann holt sich die Funktion „fgets()“ die nächste Zeile der Datei. Der Ablauf wird über eine „While“-Schleife abgebildet. Am Ende angekommen, wird die Datei geschlossen.

5. Neue Dateien per PHP schreiben

Natürlich kann PHP nicht nur Daten aus einer Datei lesen, sondern auch Dateien anlegen und mit Inhalt füllen. Dafür steht der Befehl „fwrite()“ zur Verfügung. Außerdem muss die Datei mit „fopen()“ in einem anderen Modus geöffnet werden. Neben dem in den vorangehenden Beispielen genutzten „r“ für Nur-Lesen („read“) gibt es weitere Modi – die wichtigsten sind „w“ für Schreiben („write“) und „a“ für das Erweitern bestehender Dateien („append“). Im folgenden Beispiel („bsp4b.php“) wird die Datei mit dem Parameter „w“ geöffnet. Diese löscht eine gegebenenfalls bestehende Datei und startet in der ersten Zeile mit dem Schreiben.

<?php
$meinedatei = fopen("testdatei.txt", "w") or die("Fehler: Datei konnte nicht erzeugt werden!");
$txt = "Dies ist die erste Zeile\r\n";
fwrite($meinedatei, $txt);
$txt = "Dies ist die zweite Zeile\r\n";
fwrite($meinedatei, $txt);
fclose($meinedatei);
?>

Damit jede Zeile auch innerhalb der Datei eine neue Zeile erhält, geben Sie jeweils die Parameter „\r\n“ mit. Dies sorgt für ein Return und eine neue Zeile.

6. Inhalt eines Verzeichnisses auslesen mit PHP

Das letzte Demoscript „bsp4c.php“ liest das Verzeichnis aus, in dem sich die aufgerufene PHP-Datei befindet, und zeigt alle Dateien als Link. Das ist nicht ganz trivial, denn Sie benötigen ein Array, das die Dateien unabhängig von der Anzahl dynamisch aufnimmt. Anschließend öffnet „opendir()“ das Verzeichnis, dessen Inhalt Sie lesen möchten. Die einzelnen Dateien werden dann mit „readdir()“ ermittelt und nacheinander in das Array geschrieben:

$dateien = array();
$verzeichnis = opendir('.');
while($f = readdir($verzeichnis)){
if($f=="bsp4c.php") {}
else
$dateien[] = $f;
clearstatcache();
}
closedir($verzeichnis);
sort($dateien);
for($zaehler = 0; $zaehler <
count($dateien); $zaehler++){
echo ‚<a href="./'.$dateien[$zaehler].'"title="'.$dateien[$zaehler].'">'.$dateien[$zaehler].'</a><br />‘;
}

Die Dateinamen werden mit „sort“ aufsteigend sortiert und schließlich mit einer „for“-Schleife und dem Echo-Befehl als klickbare HTML-Links angezeigt.

Webentwicklung jetzt mit dem Videokurs von Udemy lernen

Empfehlenswerte PHP-Hilfen

PHP einfach: www.php-einfach.de
PHP5-Tutorial (englisch): www.w3schools.com
PHP-Kurs: www.php-kurs.com
Offizielles Tutorial: http://php.net/manual/de/tutorial.php
PHP-Tutorial: http://de.html.net/tutorials/php/

0 Kommentare zu diesem Artikel
2189414