PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
   » Gästebuch
   » Logfiles
   » Sitemap
   » Login
   » Login Sessions
   » Login Sessions +
      Dateien

   » Links anklickbar
   » Counter
   » Dateiupload
   » Formular mailer
   » Cookies

» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
Mathe Nachhilfe
Suchmaschinenoptimierung
PHP Forum

Tutorials: PHP Gästebuch

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: gaestebuch.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: gaestebuch.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:

Wollen Sie einen Beitrag hinzufügen?<br><br>

<form action="neuerbeitrag.php" Method="post">

Ihr Name:<br>
<input name="Name" size="40"><br><br>

E-Mail:<br>
<input name="EMail" size="40"><br>
<br><br>

Inhalt:<br>

<textarea name="inhalt" cols="40" rows="12"
wrap="physical"></textarea><br>
<input type="submit" value="Absenden">
</form>
<hr>

<?php
$beitrag = file("gaestebuch.txt");
?>
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\" bordercolorlight=\"black\"
   bordercolordark=\"black\" width=\"50%\">
   <tr>
   <td>
  Von <a href=\"mailto:$zerlegen[0]\">$zerlegen[1]</a>
  am $zerlegen[2]
   </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.

Weil PHP Anführungszeichen so: \" speichert, entfernen wir mit $ausgabe = stripslashes($ausgabe); den Backslash vor dem Anführungszeichen.

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 gaestebuch.php so aus:
<html>
<head>
<title>Gästebuch</title>

Wollen Sie einen Beitrag hinzufügen?<br><br>

<form action="neuerbeitrag.php" Method="post">
Ihr Name:<br>
<input name="Name" size="40"><br><br>

E-Mail:<br>
<input name="EMail" size="40"><br>
<br><br>

Inhalt:<br>

<textarea name="inhalt" cols="40" rows="12"
wrap="physical"></textarea><br>
<input type="submit" value="Absenden">
</form>
<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\" bordercolorlight=\"black\"
   bordercolordark=\"black\" width=\"50%\">
   <tr>
   <td>
  Von <a href=\"mailto:$zerlegen[0]\">$zerlegen[1]</a>
  am $zerlegen[2]
   </td>
   </tr>

   <tr>
   <td>
   $zerlegen[3]
   </td>
   </tr>
   </table><br>
   ";
   }
?>

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

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

$email = $_POST["EMail"];
$email = htmlentities($email);
?>
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 == "")
   {
   echo "Sie müssen das Feld \"Namen\"
   und \"Inhalt\" ausfüllen";
   }
?>
Wenn diese Felder doch ausgefüllt wurden, brauchen wir else
<?php
else
   {
   $datum= date("d.m.Y H:i:s");

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

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

   echo "Ihr Eintrag wurde erfolgreich gespeichert";
   }
?>
Mit $datum = date("d.m.Y H:i:s"); bestimmen wir, wann der Beitrag gespeichert wurde (Tag.Monat.Jahr Stunde:Minute:Sekunde).
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 gaestebuch.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);

$email = $_POST["EMail"];
$email = htmlentities($email);

if ($inhalt == "" or $user == "")
   {
   echo "Sie müssen das Feld \"Namen\"
   und \"Inhalt\" ausfüllen";
   }

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

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

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

   echo "Ihr Eintrag wurde erfolgreich gespeichert";
   }
?>

<br>
<a href="gaestebuch.php">Zurück zum Gästebuch</a>
</body>
</html>
Der Inhalt von gaestebuch.txt sieht ca. so aus: ich@du.de|Andavos|07.12.2003 15:08:44|Alles verstanden du@ich.de|Nils Reimers|07.12.2003 15:37:50|Wenn nicht, dann frag bitte im Forum stellen

Und schon ist unser Gästebuch fertig.

Autor Andavos

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» Prinzip des Kampfsystemes kurz un ...

» Facebook Connect

» Geometrische Formen verlinken







© PHP-Einfach.de 2003 - 2010