Webdesign in Siegen

PHP-Gästebuch verbessern

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

PHP-Gästebuch verbessern

Beitragvon Paddy am 09.04.2005, 09:08

Hi ich hab mal gedacht ich poste mal mein Gästebuch das ich geschrieben hab. Macht mal ein paar Verbesserungen. Es ist schon voll funktionstüchtig.

Code von der gaeste.php :
Code: Alles auswählen
<?php
   if (isset($_POST['eintragen'])){
      $lines = preg_split("/\r\n/", $_REQUEST['nachricht']);
         foreach ($lines as $key => $value){
            $nach=$nach.$value.'<br />';
       }
      $line=date("d.m.Y").'>'.date("H:i").'>'.$_POST['name'].'>'.$_POST['email'].'>'.$_POST['page'].'>'.$nach."\n";
      $fp=fopen('docs/guest.txt',"a+");
      fputs($fp,$line);
      fclose($fp);
   }
   if(isset($_POST['neu'])){
      include "neu.php";
   }
      $guestdat=file('docs/guest.txt');
      $k=count($guestdat)-1;
      echo '<form method="post" action="gaeste.php">'."\n";
      echo '<div><input type="submit" name="neu" value="Eintrag erstellen" /></div>'."\n";
      echo '</form>'."\n";
      while($k>=0){
         $temp=explode('>',$guestdat[$k],6);
         echo '<p>Am '.$temp[0].' um '.$temp[1].' Uhr schrieb <a href="mailto:';
         echo  $temp[3].'">'.$temp[2].'</a> (<a href="http://'.$temp[4].'">'.$temp[4]."</a>)</p>\n";
         echo '<p>'.$temp[5]."</p>\n";
         echo "<p>&nbsp;</p>\n";
         $k--;
      }
?>


Code von der neu.php :
Code: Alles auswählen
<form method="post" action="index.php?topic=gaeste">
<table>
<tr>
   <td>Dein Name:</td>
   <td>Deine E-Mail-Adresse:</td>
</tr>
<tr>
   <td><input type="text" name="name" /></td>
   <td><input type="text" name="email" /></td>
</tr>
<tr>
   <td colspan="2">Deine Homepage:</td>
</tr>
<tr>
   <td colspan="2"><input type="text" name="page" /></td>
</tr>
<tr>
   <td colspan="2">Deine Nachricht:</td>
</tr>
<tr>
   <td colspan="2"><textarea name="nachricht"></textarea></td>
</tr>
</table>
<input type="submit" name="eintragen" value="eintragen" />
</form>


Im selben Verzeichnis wo diese beiden Dateien liegen muss ein verzeichnis docs sein das guest.txt enthält

Viel Spass beim Verbessern Paddy
Benutzeravatar
Paddy
Mitglied
 
Beiträge: 89
Registriert: 23.01.2005, 18:01
Wohnort: Mendig

Beitragvon cinpix am 09.04.2005, 09:53

HeY Paddy! Du kommst mit deinem Gästebuch wie gerufen :D
Ich bin nämlich gerade dabei, die eine Clanseite fertig zu machen und es fehlt noch ein Gästebuch... Ich kann leider noch immer kein PHP (Werd ich aber bald mal lernen). Darf ich dein Gästebuch für die Seite verwenden???

PS: Habs noch nicht getestet...
cinpix
Mitglied
 
Beiträge: 402
Registriert: 11.12.2004, 00:19

Beitragvon Malte am 09.04.2005, 10:14

Für uns muss
<form method="post" action="index.php?topic=gaeste">
so aussehen:
<form method="post" action="gaeste.php">
[x] <<< Nail here for new Monitor
Benutzeravatar
Malte
Mitglied
 
Beiträge: 365
Registriert: 01.04.2005, 10:27
Wohnort: Zuhause

Beitragvon Paddy am 09.04.2005, 10:26

Ja klar kannst du das für deine Seite verwenden!

Snare hat recht das hat ich vergessen zu ändern!
Benutzeravatar
Paddy
Mitglied
 
Beiträge: 89
Registriert: 23.01.2005, 18:01
Wohnort: Mendig

Beitragvon Manuel am 09.04.2005, 11:10

Code: Alles auswählen
      $lines = preg_split("/\r\n/", $_REQUEST['nachricht']);
         foreach ($lines as $key => $value){
            $nach=$nach.$value.'<br />';


Sag mal Paddy, könnte man das nicht viel einfacher mit der Funktion nl2br formatieren? Diese ist ab PHP4 ... sogar XHTML-konform.

Lg,
Manuel
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9205
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Beitragvon Paddy am 09.04.2005, 11:30

Hatte ich auch erst probiert aber irgendwie hat das nicht richtig funktioniert!
Find das so wies jetzt ist eigentlich auch recht doof!
Deshalb haut rein Jungs.
Benutzeravatar
Paddy
Mitglied
 
Beiträge: 89
Registriert: 23.01.2005, 18:01
Wohnort: Mendig

Beitragvon Manuel am 09.04.2005, 11:38

Was genau hat denn nicht richtig funktioniert bzw. hat er irgendeine Fehlermeldung ausgegeben?

echo nl2br($daten[Inhalt]);

Bei meinem Newsscript lese ich das einfach aus der DB aus und formatiere es dann via nl2br. Mir ist schon klar, dass du es bei dir so nicht machen kannst, aber versuch es doch mal so:

Code: Alles auswählen
if (isset($_POST['eintragen'])){
  $nachricht = nl2br($_POST['nachricht']);



htmlspecialchars
Diese Funktion solltest du dann vielleicht ebenfalls mal über deinen Text laufen lassen.

Lg,
Manu
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9205
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Beitragvon Malte am 09.04.2005, 12:04

VIEL einfacher:

$text = str_replace("\r\n", "<br />", $text);
[x] <<< Nail here for new Monitor
Benutzeravatar
Malte
Mitglied
 
Beiträge: 365
Registriert: 01.04.2005, 10:27
Wohnort: Zuhause

Beitragvon Paddy am 09.04.2005, 12:38

Ich weiß zwar net wieso das als ich das programmiert habe net funktioniert hat. Aerb jetzt funktionierts. Hab bestimmt irgend ein Zeichen vergessen.

Der aktuelle gaeste.php code
Code: Alles auswählen
        if (isset($_POST['eintragen'])){
                $text = str_replace("\r\n", "<br />", $_POST['nachricht']);                               $line=date("d.m.Y").'>'.date("H:i").'>'.$_POST['name'].'>'.$_POST['email'].'>'.$_POST['page'].'>'.$text."\n";
                $fp=fopen('docs/guest.txt',"a+");
                fputs($fp,$line);
                fclose($fp);
        }


ließt sich schon viel besser!

Gruß Paddy
Benutzeravatar
Paddy
Mitglied
 
Beiträge: 89
Registriert: 23.01.2005, 18:01
Wohnort: Mendig

Beitragvon Rene am 10.04.2005, 20:16

Hallo Paddy

Du solltest bei deinem Gästebuch mehr auf die Sicherheit achten, das heißt wie Manu schon erwähnt hat einmal HTML verbieten.

Desweiteren sollte eine abschaltbare IP SPerre eingebaut werden und die Funktion trim() solltest du auch verwenden.
Diese entfernt die Leerzeichen am Anfang und am Ende eines Strings.

LG rené

PS: Bald kommt mein Neues Gästebuch raus. Simon sicherlich für dich intressant da es Template gesteuert ist.
Rene
Mitglied
 
Beiträge: 1188
Registriert: 28.02.2005, 20:10
Wohnort: nähe Ravensburg

Beitragvon Paddy am 10.04.2005, 23:03

Jo! Das Gästebuch ist ja auch nur das Skelett. Wär auch net schlecht wenn das ab einer bestimmten Anzahl eine neue Seite erstellt.

Muss jetzt erst mal ein paar Homepage Projekte fertig stellen. Darunter auch 3 CMS. Das is ne sau Arbeit kann ich euch sagen.

Paddy
Benutzeravatar
Paddy
Mitglied
 
Beiträge: 89
Registriert: 23.01.2005, 18:01
Wohnort: Mendig

Beitragvon Rene am 11.04.2005, 13:15

Das das arbeit ist weis ich aber wenn du das richtig machst kannst du mit modulen arbeiten und gut ist.
Das mit der Seitenaufteilung ist kein großes ding.
Ich post mal bei gelegenheit nen Code.

Lg
Rene
Mitglied
 
Beiträge: 1188
Registriert: 28.02.2005, 20:10
Wohnort: nähe Ravensburg

Beitragvon moq am 22.08.2005, 15:05

Erstmal Hallo an alle, ich bin neu hier :)

Bin zufällig über diesen Beitrag gestolpert. Ich hab grad die letzen Tage ein Gästebuch programmiert, jedoch auf einer MySQL-Datenbank basierend. Das Gästebuch hat den großen Vorteil das es über eine settings.php praktisch komplett konfigurierbar ist (Wieviel Beiträge sollen auf einer Seite angezeigt werden; Soll das Menü oben oder unten oder oben und unten angezeigt werden?; Welche Farben soll das GB haben; Welche Eigenschaften sollen die Tabellen haben in denen die Einträge dargestellt werden, etc. Damit ihr euch besser vorstellen könnt, wie das konkret ausschaut hier mal der Code der settings.php:
Code: Alles auswählen
$anzahl = 9;                        // Wieviel Einträge sollen auf einer Seite angezeigt werden?

$menu = 2;                           // menu = 1 -> Menü wird nur oben angezeigt
                                 // menu = 2 -> Menü wird oben und unten angezeigt
                                 // menu = 3 -> Menü wird nur unten angezeigt
                              
$ordnedb = true;               // true  -> ordnedb.php wird bei jedem Aufruf der index.php ausgeführt
                                 // false -> ordnedb.php wird nicht automatisch ausgeführt!
                              
$datenbank[] = array();                  // Hier werden die Datenbanksettings festgelegt
$datenbank['adresse'] = 'localhost';
$datenbank['benutzername'] = 'root';
$datenbank['pw'] = '';


$bgfarbe[]            = array();   // Im Array $bgfarbe sind die Einstellungen zur Hintergrundfarbe
$bgfarbe['main']        = "#666666";         // festgelegt. Die Angaben können als String (z.B. red)
$bgfarbe['id']         = "#999999";         // aber auch in hexadezimaler Schreibweise (z.B. #ff0000)
$bgfarbe['name']      = "#999999";         // formuliert werden
$bgfarbe['zeit']      = "#999999";         
$bgfarbe['datum']      = "#999999";
$bgfarbe['nachricht']   = "#CCCCCC";

$tabelle[]            = array();   // In diesem Array sind die Einstellungen für die Tabellen,
$tabelle['rahmen'] = 0;      // in welchen sich die Gästebucheinträge befinden, definiert            
$tabelle['breite']      = 500;
$tabelle['cellspacing']   = 0;
$tabelle['cellpadding']   = 6;


Also wenn Interesse bestehen würde, würde ich den Quellcode des GB's + den SQL-Code für die Erstellung der Datenbank selbstverständlich posten.

Lg. Chris
moq
Mitglied
 
Beiträge: 2
Registriert: 22.08.2005, 14:55


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: lex, loetmann und 2 Gäste