Thomas Luethi: Gästebuchscript tipps für veränderung???

Beitrag lesen

Hallo,

Hab das Script nur schnell ueberflogen.
Ein paar Bemerkungen:

<div align="center">

Aber, aber! Das ist doch depracated!
Wenn schon direkt im TAG, dann so:
<div style="text-align:center">
Viel besser waeren allerdings IDs oder Klassen.

<form action="" method="post">

Gib im ACTION-Attribut die URL an. Tip:
$_SERVER['PHP_SELF']

Da es sich offenbar um ein sich selbst aufrufendes
Skript handelt, solltest Du mal den Artikel zum
"Affenformular" lesen und umsetzen:
http://www.dclp-faq.de/q/q-stil-normalform.html
Deine Art der Reaktion bei fehlenden Eintraegen
ist nicht das Optimum an Kundenfreundlichkeit.

if ($action == "submitEintrag")
 {

$nameFORM = trim ($nameFORM);
 $emailFORM = trim ($emailFORM);
 $titelFORM = trim ($titelFORM);
 $kommentarFORM = trim ($kommentarFORM);

u.s.w.
Du verwendest immer noch die Eingaben aus dem Formular als globale Variablen.
Das ist unsicher und veraltet.

Statt      Besser
$action    $_POST['action'] oder $_REQUEST['action']
$nameFORM  $_POST['action'] oder $_REQUEST['nameFORM']
u.s.w.

Das Skript wird auf neuen PHP-Installationen,
wo register_globals auf OFF ist, nicht funktionieren, siehe
http://www.dclp-faq.de/q/q-formular-register-globals.html

Und lies unbedingt:
dclp-FAQ: Wie unterscheide ich böse Variablen von guten?
http://www.dclp-faq.de/q/q-security-variablen.html

Statt nur mit trim() solltest Du die uebergebenen Variablen
richtig kontrollieren und "harmlos" machen.

Ich wuerde zudem andere Namen verwenden, damit im spaeteren
Skript klar ist, dass es sich um die kontrollierten
Variablen handelt.

$nameintern=""; // Um auch bei register_globals ON sicher zu sein...
$nameintern=htmlspecialchars(strip_tags(trim($_REQUEST['nameFORM'])));
u.s.w.

Lies im PHP-Manual den Abschnitt "Predefined Variables":
(englisch, die deutsche Uebersetzung ist unvollstaendig/veraltet)
http://www.php.net/manual/en/language.variables.predefined.php und
http://www.php.net/manual/en/reserved.variables.php

$zensiert = str_replace("Schimpfwort","*****",$zensiert);
  $zensiert = str_replace("Schimpfwort","*****",$zensiert);
  $zensiert = str_replace("Schimpfwort","****",$zensiert);
  $zensiert = str_replace("Schimpfwort","***",$zensiert);
  $zensiert = str_replace("Schimpfwort","*****",$zensiert);

Tip: str_replace() kann auch mit Arrays umgehen.
http://www.php.net/manual/de/function.str-replace.php
Das macht alles viel einfacher, und man muss die
Funktion nur ein einziges Mal aufrufen:

$schimpfwoerter=array("schimpfwort1", "schimpfwort2", ... );
$ersatz="***";
$zensiert=str_replace($schimpfwoerter,$ersatz,$kommentar);

Gruesse,

Thomas

P.S.

Danke im vorraus.

Schreibt man immer noch mit einem "r".
Auch wenn Google ca. 47'000 "vorraus" findet:
http://www.google.com/search?q=vorraus
Nach neuer Rechtschreibung uebrigens "im Voraus":
http://www.duden.de/neue_rechtschreibung/beispiele/i.html