Hallo,
mir ist sehr wohl klar das es 100pro schon ein Thema geben wird dazu.
Jedoch wird da oft nur auf andere Seiten verlinkt die nicht wirklich weiter helfen, leider.
Was ich derzeit versuche zu bauen ist ein Kommentarsystem für eine News-/Blogseite.
Optional die möglichkeit für ein Kommentar zu einem Kommentar (optional!).
Da ich die bedienung später jedoch sehr einfach halten will habe ich an einsatz des Folgenden Spam-Schutzes gedacht:
antispam.pju24.de/
Zudem sollten die Eingaben in die Formularfelder vor dem senden an die Datenbank überprüft werden also das kein Schadcode darin enthalten ist.
Da ich auf eine einzige Datei diesbezüglich setzte was News/Blog angeht würde ich das auch gerne so beibehalten. Um einen kleine Übersicht über den entsprechenden Codeabschnitt zu bringen poste ich hier mal den PHP-Code rein der news/blog.php:
<?php
if( (isset($_GET['mode'])) AND ($_GET['mode'] == 'view') ) {
$id = $_GET['id'];
$sql = "SELECT * FROM news WHERE id='".mysql_real_escape_string($id)."'";
$entry = mysql_query($sql,$datenbank) or die(mysql_error());
while($news = mysql_fetch_object($entry))
{
echo('<div class="post">'."\n");
echo('<h2 class="title"><a href="?p=news&mode=view&id='.$news->id.'">'.$news->title.'</a></h2>'."\n");
echo('<p class="meta"><span class="date">'.$news->datum.'</span><span class="posted">Geschrieben von <a href="?p=member&user='.$news->autor.'">'.$news->autor.'</a></span></p>'."\n");
echo('<div style="clear: both;"> </div>'."\n");
echo('<div class="entry">'."\n");
echo($news->text);
echo('</div>'."\n");
echo('</div>'."\n");
}
$kid = $_GET['id'];
$sql2 = "SELECT * FROM news_kommentare WHERE news_id='".mysql_real_escape_string($kid)."' AND display='yes'";
$entry2 = mysql_query($sql2,$datenbank) or die(mysql_error());
while($kommentare = mysql_fetch_object($entry2))
{
echo('<h4>Kommentare</h4>'."\n");
echo('<ol>'."\n");
echo('<li>'."\n");
echo('<a href="'.$kommentare->homepage.'" target="_blank">'.$kommentare->name.'</a> ('.$kommentare->datum.') schrieb: <br />'."\n");
echo($kommentare->naricht);
echo('</li>'."\n");
echo('</ol>'."\n");
}
echo('<h4>Kommentar schreiben</h4>'."\n");
echo('<form action="?p=news&mode=view&id='.$news->id.'&action=commentpost#comments" method="post" id="commentform">'."\n");
echo('<label for=form-name>Name (erforderlich)</label><br />'."\n");
echo('<input name=form-name id=form-name type=text size=40 required><br />'."\n");
echo('<label for=form-email>Email (erfordlich)</label><br />'."\n");
echo('<input name=form-email id=form-email type=email size=40 required><br />'."\n");
echo('<label for=form-url>Homepage</label><br />'."\n");
echo('<input name=form-url id=form-url type=url size=40><br />'."\n");
echo('<label for=form-comment>Dein Kommentar</label><br />'."\n");
echo('<textarea name=form-comment id=form-comment size=60 required></textarea><br />'."\n");
echo('<input name="datum" type="hidden" value="'.date('D.m.Y').'" />');
echo('<input class="button" type="submit" value="Kommentar eintragen" tabindex="5" />'."\n");
echo('</form>'."\n");
Bitte beachten, es ist nur ein ausschnitt der Datei und zwar der wo für die Anzeige des Beitrages + der Kommentare zuständig ist.
Auch interessant vlt. schon zu wissen ist das ich das Formular mit HTML5 möglichkeiten realisiert habe, diesbezüglich stört mich die geringe Größe der Eingabefelder besonders des Textbereiches der sehr klein ausfällt.
Sollte wirklich der gesammte Code dazu nötig sein um hier etwas einzubauen dafür werde ich diesen Posten. Denke aber nicht das er wirklich nötig ist da neben einem Abteil für eine Archiv anzeige sowie Übersichtsanzeige nichts weiter enthalten ist.
Was vorab schon zu beachten auch ist das in der Datenbank eine Spalte existiert die vom Formularfeld standard mit “no” ausgefüllt werden muss. Da diese erst später nach überprüfen eines Kommentars freigegeben werden soll. Vielleicht auch unnötig später wenn der Spamschutz funktioniert.
MfG SirZimt
PS: Wenn Live-Beispiel erwünscht kann ich gerne (mehrfach) liefern!