Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Valides PHP Gästebuch OHNE MySQL    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag


Neuling


Dabei seit: 01.01.1970
Herkunft:
Posts:
     Valides PHP Gästebuch OHNE MySQL Zitat | Bearbeiten

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:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
<!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 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
<?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:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
<!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 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?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 
1:
2:
3:
4:
5:
6:
7:
<?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 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
<?php
else
   {
   
$datumdate("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:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
<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
   {
   
$datumdate("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: 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.


*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.




  • Post wurde schon 5x editiert, das letzte mal am 07.02.2009 um 16:11 von
    24.01.2009, 09:20 Profil | PM | E-Mail  
    Stephen Falken
    Mitglied
    Aktiver User


    Dabei seit: 21.09.2008
    Herkunft:
    Posts: 227
          Zitat | Bearbeiten

    Mensch, du musst ja sehr robuste [Strg]+[C] / [V]-Tasten haben bei der dauernden Beanspruchung. <-- Humor!

    Zitat:
    <meta name="Author" content="Altecer">

    DAS ist echt überflüssig, überheblich und DREIST! Das würde ich aber ganz schnell da rausnehmen! Das Script kommt zu 99% von andavos, das hast du zwar unten im Post vermerkt, in den HTMLs hast aber NUR du schön dich als alleinigen Autor reingebastelt. Das finde ich wirklich nur zum Ko****!!!
    Du tust ausserdem mit der Äusserung dass du es nur "validiert" hast geradezu so, als ob der Autor zu blöd wäre um HTML valid schreiben zu können! Dabei war das nicht seine Absicht, sondern er hat bewusst nur die wichtigsten Teile jeweils hingeschrieben, denn nur um die geht es jeweils. Es wird davon ausgegangen, dass der Anwender HTML in Grundzügen kann und die Teile in eine HTML richtig einbauen kann. Wer das nicht kann, sollte besser woanders anfangen, denn vom reinen Kopieren wird man erstmal nichts schlauer oder kompetenter in der Sprache.

    Also: Weg mit dem schwachsinnigen Meta-Tag und eine etwas umformulierte Aussage zum Autor!


    06.02.2009, 00:39 Profil | PM | E-Mail  
    Nicklas2751
    Mitglied
    Sehr guter User


    Dabei seit: 19.02.2008
    Herkunft: Bayern
    Posts: 519
          Zitat | Bearbeiten

    Zitat:
    Orginal von Stephen Falken
    Mensch, du musst ja sehr robuste [Strg]+[C] / [V]-Tasten haben bei der dauernden Beanspruchung. <-- Humor!

    Zitat:
    <meta name="Author" content="Altecer">

    DAS ist echt überflüssig, überheblich und DREIST! Das würde ich aber ganz schnell da rausnehmen! Das Script kommt zu 99% von andavos, das hast du zwar unten im Post vermerkt, in den HTMLs hast aber NUR du schön dich als alleinigen Autor reingebastelt. Das finde ich wirklich nur zum Ko****!!!
    Du tust ausserdem mit der Äusserung dass du es nur "validiert" hast geradezu so, als ob der Autor zu blöd wäre um HTML valid schreiben zu können! Dabei war das nicht seine Absicht, sondern er hat bewusst nur die wichtigsten Teile jeweils hingeschrieben, denn nur um die geht es jeweils. Es wird davon ausgegangen, dass der Anwender HTML in Grundzügen kann und die Teile in eine HTML richtig einbauen kann. Wer das nicht kann, sollte besser woanders anfangen, denn vom reinen Kopieren wird man erstmal nichts schlauer oder kompetenter in der Sprache.

    Also: Weg mit dem schwachsinnigen Meta-Tag und eine etwas umformulierte Aussage zum Autor!



    Falsch es ist ja von ihm so zusammengestellt worden also darf erm it einverständnis von Andavos seine Copyrights darauflegen. Das ist dort so wie bei der Musik, nehmen wir mal z.b. die Bravo Hits die steht auch unter Copyrights von dem Hersteller der CD und nicht unter denen die die Musik komponiert usw. haben.


    Über mich

    ----------------

    11.02.2009, 12:58 Profil | PM | E-Mail  
    Thoro
    Mitglied
    Exzellenter User


    Dabei seit: 29.09.2008
    Herkunft: keine Angabe
    Posts: 1126
          Zitat | Bearbeiten

    Basiert deine Aussage auf irgendeiner Form von Wissen oder hast du nur deine Finger ein wenig gedehnt, weil sie einzuschlafen drohten?

    Im übirgen gebe ich Stephen Falken Recht, dass die alte Darstellungsform von Altecer wirklich dreist war, einfach aus dem Grund, weil sie geeignet war, den Originalautor zu verschleiern. Mittlerweile hat Altecer ja wohl einige Änderungen vorgenommen und letztlich ist es auch Andavos Sache sich darüber zu beschweren, weil es sein Werk ist.


    Leidenschaftlicher Rechtschreibfehler-Sammler sucht mehrere Lagerhallen zwecks Erweiterung der Sammlung. Bis zur Vergrößerung der Lagerkapazitäten bitte möglichst keine Rechtschreibfehler mehr posten. Danke.
    11.02.2009, 15:23 Profil | PM | Homepage | E-Mail  
    Gast


          Zitat | Bearbeiten

    hau doch ajax rein


    12.02.2009, 21:12  
    Gast


          Zitat | Bearbeiten

    Zitat:
    Orginal von Altecer
    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:
     PHP 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    42:
    43:
    
    <!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 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    
    <?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:
     PHP 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    42:
    43:
    44:
    45:
    46:
    47:
    48:
    49:
    50:
    51:
    52:
    53:
    54:
    55:
    56:
    57:
    58:
    59:
    60:
    61:
    62:
    63:
    64:
    65:
    66:
    67:
    68:
    69:
    70:
    71:
    72:
    
    <!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 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    
    <?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 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    
    <?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 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    
    <?php
    else
       {
       
    $datumdate("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:
     PHP 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    
    <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
       {
       
    $datumdate("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: 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.


    *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.

  • [center][url]


    04.04.2011, 03:44  
    Gast


          Zitat | Bearbeiten

    fdhhhhhhhhhhdhdhdd[center][email][quote][u][i][b]
     PHP 
    1:
    
     PHP 
    1:
    
     PHP 
    1:
    
     PHP 
    1:
    
     PHP 
    1:
    
     PHP 
    1:
    
     PHP 
    1:
    
     PHP 
    1:
    



    04.04.2011, 03:45  
    Gast


          Zitat | Bearbeiten

    NAKK
    Zitat:
    Orginal von Altecer
    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:
     PHP 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    42:
    43:
    
    <!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 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    
    <?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:
     PHP 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    42:
    43:
    44:
    45:
    46:
    47:
    48:
    49:
    50:
    51:
    52:
    53:
    54:
    55:
    56:
    57:
    58:
    59:
    60:
    61:
    62:
    63:
    64:
    65:
    66:
    67:
    68:
    69:
    70:
    71:
    72:
    
    <!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 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    
    <?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 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    
    <?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 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    
    <?php
    else
       {
       
    $datumdate("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:
     PHP 
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    
    <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
       {
       
    $datumdate("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: 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.


    *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.




  • 04.04.2011, 03:46  
    Gast


          Zitat | Bearbeiten

    Hey ihr scheint ja auch eine sehr robustes Mausrad zu haben wenn ihr immer das ganze Tutorial Kopiert um iwas am Ende zu zitieren.

    Wie auch immer...
    Habe mir in der letzten Woche das PHP und MySQL tutorial von Andavos durchgearbeitet.
    (bedeutet ich habe eig keinen Plane)
    Nebenbei habe ich selber einiges ausprobiert und habe so ziemlich das Selbe gbook wie du hier hinbekommen! Und bei dir gibts die selbe Fehlerausgabe wie bei mir.



    nur das es bei mir daran liegt, dass er in der .txt immer noch ne neue Zeile reinhaut und deswegen die Ausgabe spinnt. Bei dir macht er das nicht und trotzdem kommt die Meldung

    str + C von deinen Dateien deswegen sollte es eig Richtig sein

    habe ich was falsch gemacht?


    25.04.2011, 02:42  
    Gast


          Zitat | Bearbeiten

    noch mal das Bild des Fehlers


    25.04.2011, 02:44  
    Veritas
    Mitglied
    Neuling


    Dabei seit: 25.04.2011
    Herkunft: keine Angabe
    Posts: 1
          Zitat | Bearbeiten

    sry für den spamm aber mir ist noch was eingefallen
    $kommentar = str_replace("|","/",$kommentar);

    wenn du das noch mit reinhaust, dann zeigt er auch den ganzen text an, falls einer auf die idee kommen sollte ein | zu posten


    25.04.2011, 03:07 Profil | PM | E-Mail  
    Gast


         wiyono Zitat | Bearbeiten

    Hallo,
    erstmal Vielen Dank für das Tutorial.
    Ich habe eine Problem...
    Wie kann ich total entries perpage view?
    Ich will perpage nur 10 eintrag, aber ich weiß nicht wie das macht.

    Danke.


    24.05.2012, 14:57  
    FalkenaugeMihawk
    Mitglied
    Perfekter User


    Dabei seit: 05.06.2010
    Herkunft: Schweiz
    Posts: 2619
          Zitat | Bearbeiten

    Wenn du immer noch nach ner Lösung suchst, siehe: http://forum.php-einfach.de/thread.php?threadid=12201&seite=1#84723


    24.06.2012, 21:36 Profil | PM | E-Mail  
    Seiten (1):  1 
    PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Valides PHP Gästebuch OHNE MySQL   

    Neues Thema | Antworten   


    Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz