Zur Startseite Eine Frage, die immer wieder in den einschlägigen Foren auftaucht ist diese: Wie kann ich eine Internetseite einrichten, bei der mein Kunde den Text und ein Bild selbst ändern kann, ohne ein aufwändiges Content-Management-System (CMS) zu installieren?
Wenn es wirklich nur um einen Text-Absatz und ein Bild geht, das hier jeweils ausgetauscht werden soll, so kann dies mit wenigen PHP-Zeilen realisiert werden. Dieses Beispiel soll zeigen, wie es gemacht wird. Das Skript können Sie hier als ZIP-Datei herunterladen: Download Zip-Datei. Die Datei enthält zwei Skripte "edit.php" und "seite.php".
Advertisement/Werbung
Anmerkung: Die hier vorgestellten Beispiele sollen lediglich das Prinzip verdeutlichen. Bei einigen Einzelheiten würde man in einer endgültigen Anwendung möglicherweise anders vorgehen. Sie dienen hier lediglich als Beispiele, damit das Verfahren anschaulich erläutert werden kann. In meinen Online-Kursen wird selbstverständlich genauer auf Einzelheiten eingegangen.
Das Skript "seite.php" kopieren Sie auf Ihren Webspace, dort wo die eigentliche Seite angezeigt werden soll. Das Skript "edit.php" kopieren Sie in ein Verzeichnis "admin" direkt unterhalb dieses Verzeichnisses. Dieses Admin-Verzeichnis können Sie dann über .htaccess schützen, so dass man die Seite "edit.php" nur als berechtigter Benutzer aufrufen kann.
Damit das Skript die Datei "inhalt.txt" anlegen kann, muss das admin-Verzeichnis die Rechte 777 (also Schreibrecht für Alle) besitzen. Sollte das nicht möglich sein, kopieren Sie einfach eine leere Textdatei mit dem Namen "inhalt.txt" in das Verzeichnis. Die Rechte für diese Datei müssen auf 646 oder 666 eingestellt werden, damit das Skript die Datei verändern kann.
Wenn auch Bilder hochgeladen werden sollen, muss das Verzeichnis, in dem sich "seite.php" befindet ebenfalls die Rechte 777 oder 757 haben. Andernfalls kann das Skript keine neuen Bilder abspeichern oder alte Bilder löschen.
Advertisement/Werbung
Das Skript zur Anzeige der Seite ist recht einfach gehalten:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Anzeige-Seite</title>
</head>
<body>
<?php
$fp = fopen("admin/inhalt.txt", "r");
$inhalt = "";
while (!feof($fp))
{
$inhalt .= fgets($fp);
}
echo nl2br($inhalt);
if (file_exists("bild1.gif"))
{
$bild = "bild1.gif";
}
if (file_exists("bild1.jpg"))
{
$bild = "bild1.jpg";
}
if (file_exists("bild1.png"))
{
$bild = "bild1.png";
}
if ($bild > "")
{
?>
<img src="<?php echo $bild ?>">
<?php
}
?>
</body>
</html>
Es handelt sich hier um normales HTML, in das etwas PHP-Code zur Anzeige des Textes und des Bildes eingefügt wurde. Um den Text anzuzeigen, wird die Datei "inhalt.txt" im Verzeichnis "admin" eingelesen. Dazu können die PHP-Dateifunktionen fopen() und fgets() verwendet werden. Alle Zeilen werden in die Variable $inhalt eingelesen. Diese wird dann über die Funktion nl2br($inhalt) auf der Seite ausgegeben. Die Funktion nl2br() sorgt dafür, dass alle Absätze, die in "inhalt.txt" vorhanden sind, als HTML-Zeilenumbrüche (
) auf der Seite ausgegeben werden.
Beim Bild muss nur festgestellt werden, um welchen Dateityp es sich handelt. Je nachdem ob das Bild als gif, jpg oder png-Datei vorhanden ist, wird der entsprechende Dateiname in dem -Tag eingefügt.
Das Skript zum Bearbeiten ist hier schon etwas umfangreicher. Die ersten Zeilen des Skriptes sollen verhindern, das der Browser-Cache eine alte Version der Seite anzeigt:
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
Diese Kombination hat sich gut bewährt um ein Neuladen der Seite zu erzwingen, so dass nicht versehentlich ein alter Text im Textfeld angezeigt wird.
Der sichtbare Teil des Skriptes besteht aus einem Formular, das auch zum Upload von Dateien (oder hier: Bildern) geeignet ist:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST" enctype="multipart/form-data"> Text:<br> <textarea name="text" rows="10" cols="40"><?php echo $_POST['text'] ?></textarea><br> Bild:<br> <INPUT type="file" name="bild" value="<?php echo $_POST['bild'] ?>"><br> <input type="submit" name="submit" value="speichern"> </form>
Damit auch ein Upload funktioniert, muss das