PHP-Einfach.de
  • PHP Tutorial
  • MySQL Tutorial
  • Für Fortgeschrittene
  • Webhosting
  • Forum

Codeschnipsel

Valides PHP Gästebuch OHNE MySQL

Zurück zur Übersicht
Wie man mit PHP und Textdateien ein Valides Gästebuch erstellt, erfährst du hier.

Wir brauchen für unser Gästebuch 2 PHP-Seiten.
Auf der 1. Seite sieht man die bisherigen Einträge. Natürlich sollte man sich auf dieser Seite auch eintragen können.
Diese Seite nennen wir: index.php
Auf der anderen Seite werden die Daten, die wir vorher in ein Formular eingegeben haben, in die Datei gaestebuch.txt gespeichert. Diese Seite nennen wir: neuerbeitrag.php

Schritt 1: index.php
Als erstes müssen wir ein Formular erstellen. In diesem Formular geben wir unsere E-Mail Adresse und unseren Text ein.
Die Datenfelder werden mit dem Befehl Method="post" an neuerbeitrag.php übertragen. Das Formular würde dann so aussehen:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
 <head> 
  <title> 
   Valides G&auml;stebuch anhand einer Textdatei 
  </title> 
  <meta name="Author" content="Altecer & Andavos"> 
  <meta name="Keywords" content="Gaestebuch, PHP-einfach, Textdatei, programmierung, PHP, zerlegen"> 
 </head>
 <body>
  <b>
   Wollen sie einen Beitrag hinzufügen?
  </b><br>
  <i>
   Alle Felder mit einem * müssen ausgefüllt werden !
  </i><br><br>
  <form action="neuerbeitrag.php" method="POST">
   <i>
    *
   </i>
   <b>
    Ihr Name:
   </b><br>
   <input name="Name" size="40" maxlength="35"><br><br>
   <i>
    *
   </i>
   <b>
    Thema:
   </b><br>
   <input name="thema" size="40" maxlength="35"><br><br>
   <i>
    *
   </i>
   <b>
    Inhalt:
   </b><br>
   <textarea name="inhalt" cols="40" rows="12"></textarea><br>
   <input type="submit" value="absenden">
  </form><br>
  <hr>
 </body>
</html>

Jetzt wollen wir die Beiträge ausgeben lassen, das geht so:
<?php
   $beitrag 
= file("gaestebuch.txt");
   
krsort($beitrag);

   foreach(
$beitrag as $ausgabe)
    {
      
$ausgabe = stripslashes($ausgabe);
      
$zerlegen = explode("|", $ausgabe);

      echo 
"<table align='center' border='1' cellspacing='0' cellpadding='5' width='50%'>
 <tr>
  <td>
   Von 
$zerlegen[1] Geschrieben am: $zerlegen[2]
  </td>
 </tr>
 <tr>
  <td>
   <b> 
$zerlegen[0] </b>
  </td>
 </tr>
 <tr>
  <td>
   
$zerlegen[3]
  </td>
 </tr>
</table><br>"
;
    }
  
?>

Zuerst lesen wir die Datei gaestebuch.txt zeilenweise in ein Array ein.

Mit krsort($beitrag); lassen wir die Einträge absteigend sortieren, so dass der neuste Eintrag immer oben ist.

Mit foreach geben wir die Einträge aus. Man könnte auch eine for bzw. while-Schleife benutzen.

Danach zerlegen wir den Array überall, wo ein | (Alt Gr + <) ist.
In einer einfachen Tabellenstrucktur geben wir die Einträge dann aus.

Am Ende sieht die Datei index.php so aus:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
 <head> 
  <title> 
   Valides G&auml;stebuch anhand einer Textdatei 
  </title> 
  <meta name="Author" content="Altecer & Andavos"> 
  <meta name="Keywords" content="Gaestebuch, PHP-einfach, Textdatei, programmierung, PHP, zerlegen"> 
 </head>
 <body>
  <b>
   Wollen sie einen Beitrag hinzufügen?
  </b><br>
  <i>
   Alle Felder mit einem * müssen ausgefüllt werden !
  </i><br><br>
  <form action="neuerbeitrag.php" method="POST">
   <i>
    *
   </i>
   <b>
    Ihr Name:
   </b><br>
   <input name="Name" size="40" maxlength="35"><br><br>
   <i>
    *
   </i>
   <b>
    Thema:
   </b><br>
   <input name="thema" size="40" maxlength="35"><br><br>
   <i>
    *
   </i>
   <b>
    Inhalt:
   </b><br>
   <textarea name="inhalt" cols="40" rows="12"></textarea><br>
   <input type="submit" value="absenden">
  </form><br>
  <hr>

  <?php
   $beitrag 
= file("gaestebuch.txt");
   
krsort($beitrag);

   foreach(
$beitrag as $ausgabe)
    {
      
$ausgabe = stripslashes($ausgabe);
      
$zerlegen = explode("|", $ausgabe);

      echo 
"<table align='center' border='1' cellspacing='0' cellpadding='5' width='50%'>
 <tr>
  <td>
   Von 
$zerlegen[1] Geschrieben am: $zerlegen[2]
  </td>
 </tr>
 <tr>
  <td>
   <b> 
$zerlegen[0] </b>
  </td>
 </tr>
 <tr>
  <td>
   
$zerlegen[3]
  </td>
 </tr>
</table><br>"
;
    }
  
?>
 </body>
</html>


Schritt 2: neuerbeitrag.php
Als erstes müssen wir die Eigaben aus dem Formular abfragen. Die geschieht mit Hilfe von:
<?php
$user 
= $_POST["Name"];
$user = htmlentities($user);

$inhalt = $_POST["inhalt"];
$inhalt = htmlentities($inhalt);
$inhalt = str_replace("\n", "<br>", $inhalt);

$thema = $_POST["thema"];
$thema = htmlentities($thema);
?>


Mit htmlentities wandeln wir Sonderzeichen in deren HTML-Zeichen um. So verhindern wir auch, das jemand HTML in das Gästebuch eingibt, weil Spitze Klammern auch umgewandelt werden.

Außerdem ersetzten wir bei $inhalt alle Zeilenumbrüche (\n) durch <br>, damit die Zeilenumbrüche später auch wieder ausgegeben werden.
Dafür benutzen wir die Funktion str_replace.

Jetzt wollen wir überprüfen, ob $inhalt und $user überhaupt ausgefüllt wurden. Dafür benutzten wir if.

<?php
if ($inhalt == "" or $user == "" or $thema == "")
   {
   echo 
"<p>Sie müssen das Feld 'Namen', das Thema
   und den 'Inhalt' ausfüllen</p>"
;
   }
?>


Wenn diese Felder doch ausgefüllt wurden, brauchen wir else

<?php
else
   {
   
$datum= date("d.m.Y H:i");

   
$eintrag="$thema|$user|$datum|$inhalt";

   
$datei = fopen("gaestebuch.txt", "a");
   
fwrite($datei, "\n".$eintrag);
   
fclose($datei);

   echo 
"<p>Ihr Eintrag wurde erfolgreich gespeichert</p>";
   }
?>


Mit $datum = date("d.m.Y H:i"); bestimmen wir, wann der Beitrag gespeichert wurde (Tag.Monat.Jahr Stunde:Minute).
Danach werden die Daten aus dem Formular in einer extra Variable so gespeichert, dass wir sie auch später richtig ausgeben können.

Dann öffnen wir mit fopen die Datei gastebuch.txt und fügen den neuen Eintrag ganz ans Ende der Datei.

Es wäre sinnvoll noch einen Link zu integrieren, der wieder auf index.php zurück führt.

So sieht die Seite neuerbeitrag.php am Ende aus:
<html>
<head>
<title>Gästebuch - Speichere Beitrag</title>
</head>
<body>

<?php
$user 
= $_POST["Name"];
$user = htmlentities($user);

$inhalt = $_POST["inhalt"];
$inhalt = htmlentities($inhalt);
$inhalt = str_replace("\n", "<br>", $inhalt);

$thema = $_POST["thema"];
$thema = htmlentities($thema);

if (
$inhalt == "" or $user == "" or $thema == "")
   {
   echo 
"<p>Sie müssen das Feld 'Namen'
   und 'Inhalt' ausfüllen</p>"
;
   }

else
   {
   
$datum= date("d.m.Y H:i");

   
$eintrag="$thema|$user|$datum|$inhalt";

   
$datei = fopen("gaestebuch.txt", "a");
   
fwrite($datei, "\n".$eintrag);
   
fclose($datei);

   echo 
"<p>Ihr Eintrag wurde erfolgreich gespeichert</p>";
   }
?>

<br>
<a href="index.php">Zurück zum Gästebuch</a>
</body>
</html>


Der Inhalt von gaestebuch.txt sieht ca. so aus: [email protected]|Andavos|07.12.2003 15:08:44|Alles verstanden [email protected]|Nils Reimers|07.12.2003 15:37:50|Wenn nicht, dann frag bitte im Forum stellen

Und schon ist unser Gästebuch fertig.


*ACHTUNG! Das Gästebuch ist von Andavos, ich habe es nur nochmal komplett valide überarbeitet.

Updates:
  • Ich habe ein kleines Update gemacht. anstatt EMail habe ich jetzt thema genommen.
  • Habe in den Meta Tags Andavos als Author hinzugefügt. Obwohl wenn Andavos so das nicht sehen wollte, hätte er wohl diesen Post editieren können und sich in den Meta Tags selber als Author hinzufügen können.

    Kommentare

    Autor

    Zurück zur Übersicht
    Autor: Nils Reimers
  • Zurück: URLs im Text identifizieren

    Für Fortgeschrittene

    • Objektorientierte Programmierung
    • PHP Sicherheit
    • Script-Beispiele
    • Codeschnipsel
    • Stellenmarkt
    Mit freundlicher Unterstützung von:
    • Punkt191 Werbeagentur
    • CasinoAndy Finland
    • Casinoohnelizenz.info
    • Cryptocasinomaster.com
    • CasinoHEX.at
    • inkedin.com

    Hoster – Geringste Ausfallzeit

    1. webgo Ø 1 Min.
    2. Linevast Ø 2 Min.
    3. netcup Ø 3 Min.
    4. All-Inkl.com Ø 6 Min.
    5. checkdomain Ø 8 Min.
    6. dogado Ø 17 Min.
    7. bplaced Ø 17 Min.
    8. Contabo Ø 25 Min.
    9. Hetzner Ø 49 Min.
    10. ONE.com Ø 62 Min.
    » Mehr erfahren

    Impressum | Datenschutz | Auf PHP-Einfach.de werben

    © PHP-Einfach.de 2003 - 2023

    Cookie-Zustimmung verwalten
    Um dir ein optimales Erlebnis zu bieten, verwenden wir Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wenn du diesen Technologien zustimmst, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn du deine Zustimmung nicht erteilst oder zurückziehst, können bestimmte Merkmale und Funktionen beeinträchtigt werden.
    Funktional Immer aktiv
    Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
    Vorlieben
    Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
    Statistiken
    Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
    Marketing
    Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
    Optionen verwalten Dienste verwalten Anbieter verwalten Lese mehr über diese Zwecke
    Einstellungen ansehen
    {title} {title} {title}