Kommentarsystem mit Spamschutz

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&amp;mode=view&amp;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&amp;user='.$news->autor.'">'.$news->autor.'</a></span></p>'."\n"); echo('<div style="clear: both;">&nbsp;</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&amp;mode=view&amp;id='.$news->id.'&amp;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!

Hi,

was ich so sehe holst du ja nur einen Hauptbeitrag aus der datenbank somit wäre die erste while schleife überflüssig.
desweiteren würde ich statt dem :

das nehmen:

bzw. dann bei den kommentaren kannst du die id ja gleich aus der datenbank nehmen also $news->id und nicht wieder vom user

lg flo

/edit:

Legende:

FETT => änderung
unterstrichen => kann weg , unnötig
rot => Hier sinnvoll?
blau => Datum nimmst du aber bitte nicht von da oder?

[quote]<?php
if( (isset($_GET[‘mode’])) AND ($_GET[‘mode’] == ‘view’) AND (!empty($_GET[‘id’]))) {
$id = $_GET[‘id’];
$sql = “SELECT * FROM news WHERE id=’”[b].intval/b."’";
$entry = mysql_query($sql,$datenbank) or die(mysql_error());
while($news = mysql_fetch_object($entry))
{

echo(’

’."\n");
echo(’

’.htmlspecialchars($news->title).’

’."\n");
echo(’

’.$news->datum.‘Geschrieben von ‘.htmlspecialchars($news->autor).’

’."\n");
echo(’
 
‘."\n");
echo(’
’."\n");
echo(htmlspecialchars($news->text));
echo(’
’."\n");
echo(’
’."\n");
}
$kid = $_GET[‘id’];

$sql2 = “SELECT * FROM news_kommentare WHERE news_id=’”.intval($news->id)."’ AND display=‘yes’";
$entry2 = mysql_query($sql2,$datenbank) or die(mysql_error());
while($kommentare = mysql_fetch_object($entry2))
{
echo(‘

Kommentare

’."\n");

echo(’
    ’."\n");

echo(’
  • ’."\n");
    echo(’’.$kommentare->name.’ (’.$kommentare->datum.’) schrieb:
    ‘."\n");
    echo($kommentare->naricht);
    echo(’
  • ’."\n");
    echo(’’."\n");
    }
    echo(‘

    Kommentar schreiben

    ’."\n");
    echo(’’."\n");
    echo(‘Name (erforderlich)
    ’."\n");
    echo(’
    ’."\n");
    echo(‘Email (erfordlich)
    ’."\n");
    echo(’
    ’."\n");
    echo(‘Homepage
    ’."\n");
    echo(’
    ’."\n");
    echo(‘Dein Kommentar
    ’."\n");
    echo(’
    ’."\n");
    echo(’’);
    echo(’’."\n");
    echo(’’."\n");[/quote]

    So mal noch einige Fragen denn einiges hier wirft fragen auf!

    Was genau macht intval()? Das gleiche wie mysql_real_escape()?
    wenn du „while($news = mysql_fetch_object($entry))“ wegmachst wie willst du dann noch $news->title usw. verwenden?

    Und was ist dieses .htmlspecialchars()?

    Zum Roten: Warum sollte es da nicht sinnvoll sein? Klar vlt. eher eine UL statt OL.

    Zum blauen: ja man könnte ja auch NOW() von MySQL nehmen das hatte ich beim zusammenstellen des Formulares nicht bedacht jedoch.

    Zudem habe ich mich heute mal ein wenig zu Kommentarsystemen umgeschaut was man da so findet. Google spuckt nicht viel hilfreiches aus (leider) aber man konnte ein wenig gute dinge finden. Auch fand ich was beim Quakenet/#php Tutorial was man sehr gut zu einem Kommentarsystem umbauen könnte ich aber derzeit am knobeln bin was da wo passiert denn das weiß ich liebend gerne immer bei solchen Sachen:
    tut.php-quake.net/de/guestbook.html

    Nur juckt es mich da das dort wohl auf immer die gleiche Frage geantwortet werden muss… schlecht und nicht wirklich „effektiv“ weil irgendwann weiß man auch bei mehreren alle Fragen…
    Ein anderer Beitrag redet mal wieder nur vom Aufbau der MySQL-Datenbank was ich ja schon habe, da füge ich jetzt aber noch eine parent_id spalte hinzu für folge Kommentare.

    Was mein größtes Problem beim realisieren eines Kommentarsystems jedoch ist das ich noch nie „selbst“ mit UPDATE bei MySQL gearbeitet hab, also keine Ahnung wirklich wie man da die Daten reinbringt in die Query… bisher nur mit SELECT gearbeitet. Von daher wäre es doch mal gut etwas über UPDATE zu erfahren bzw. INSERT wenn da jemand ein gutes Tutorial hat bin ich gut und gerne bereit es mir einzuverleiben :stress: .

    @Ryon_: Hoffe du kannst die Fragen oben beantworten denn die Dinge sind für mich neu und würde doch gerne wissen was diese bewirken was du da so geändert hast.

    Manual nicht bekannt?
    http://de.php.net/manual/de/function.intval.php
    http://de.php.net/manual/de/function.htmlspecialchars.php

    hi,

    sorry hab mich falsch ausgedrückt …
    Statt dem:
    while($news = mysql_fetch_object($entry))
    das hier:
    $news = mysql_fetch_object($entry);

    zum roten:
    Du hast nicht genau geschaut so wie es jetz da steht würde bei jedem(!!) kommentar es etwa so aussehn

    [quote][size=150]Kommentare:[/size]
    Flo 20.11.11 schrieb:
    bla bla bla
    [size=150]Kommentare:[/size]
    irgendwer 20.11.11 schrieb:
    hahaha
    [size=150]Kommentare:[/size]
    du 20.11.11 schrieb:
    warum steht bei jedem kommentar kommentar davor ?[/quote]
    des rote solltest du eig außerhalb der while schliefe platzieren damit das ^^ eben nicht passiert

    und mit dem datum kannst du beim insert einfach das machen z.b.
    “INSERT INTO kommentar (id,datum,name, text) VALUES (’’, '”. date(“d.m.Y”) ."’, ‘dername’, ‘dertext’);"

    unterschied zwischen intval und mysql_real_escape_string entnimmst du bitte dem manual

    lg flo

    [quote]
    “INSERT INTO kommentar (id,datum,name, text) VALUES (’’, '”. date(“d.m.Y”) ."’, ‘dername’, ‘dertext’);"[/quote]

    ich würde sogar noch einen schritt weitergehen und die mysql-eigene funktion SYSDATE() aufrufen - ist zwar minimaler unterschieder, aber man will ja aufhalten, wann der eintrag in der datenbank angelangt ist und nicht, wann dieser eintrag verarbeitet wurde :stuck_out_tongue:
    und ich finds sauberer schulterzuck

    @emil: kannte ich noch nicht :wink: danke aber mir persönlich ists eig egal ob jetz die zeit um paar sec nicht stimmt :wink:

    Das ist auch Unfug.
    Wofür gibt es denn Datumstypen in MySQL?

    @Ryon_: Ok das hab ich nicht beachtet das werd ich mal direkt beheben ist ja nicht sinn der Sache wie du schon gesagt hast.

    Soweit ich das mit dem INSERT befehl richtig verstand sähe dann der MySQL Code folgender maßen aus:

    “SELECT * FROM news WHERE id=’”.mysql_real_escape_string($id)."’";
    “INSERT INTO kommentar (id,news_id,datum,name, text) VALUES (’’,$_GET[‘id’], '”. date(“d.m.Y”) ."’, '$_POST[‘name]’, '$_POST[‘text’]);"

    oder irre ich mich da?
    Werde später weiter mal die Infos von euch hier durchgehen.

    hi,

    [quote=“SirZimt”]
    “SELECT * FROM news WHERE id=’”.mysql_real_escape_string($id)."’";[/quote]
    Das hat nix mit dem insert zu tun ^^und wie gesagt nimm doch besser intval…

    [quote=“SirZimt”]
    “INSERT INTO kommentar (id,news_id,datum,name, text) VALUES (’’,’".$_GET[‘id’] ."’, '”. date(“d.m.Y”) ."’, '". mysql_real_escape_string($_POST[‘name’]) ."’, '". mysql_real_escape_string($_POST[‘text’]) ."’);"[/quote]
    genau so müsste es passen bitte bachte aber die ’ bzw. "
    das mit dem date sehen die andern zwar nicht so gern aber kannst erst mal so lassen [size=85](müsst mir ich erst über eure vorgehensweiße informieren bzw. mach in der tabelle das feld “date” als typ date dann kannst auch einfach statt dem date(“d.m.Y”) ein NOW() nehmen)[/size]

    @hummer: ich weiß ja nicht ob er das feld als datum oder einfach als text typ eingestellt hat :wink:

    lg flo

    Bei dem SELECT steht jetzt noch mysql_real_escape() da ich es noch nicht geändert hatte und die Zeile einfach von oben kopiert habe, ich lese mir heut erstmal genau durch was intval() genau ist und werde es dann ändern.

    Das Feld datum in der Tabelle ist tatsächlich als Text definiert !haue . Hab das derzeit so genommen da ich das Datum ja immer per Hand eintrug und ich nicht weiß ob MySQL den Fehlerhaften Zeitstempel des Servers verwendet, weil der scheint nicht korrekt zu sein.

    So um hier klarheit zu schaffen hier mal der gesamte code (bin am ändern derzeit von mysql_real_escape usw.:

    [code]<?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());
    $news = mysql_fetch_object($entry);
    {
    echo(’

    ’."\n");
    echo(’

    ’.$news->title.’

    ’."\n");
    echo(’

    ’.$news->datum.‚Geschrieben von ‚.$news->autor.‘

    ‘."\n");
    echo(’
     
    ‚."\n");
    echo(‘
    ’."\n");
    echo(htmlspecialchars($news->text));
    echo(’
    ’."\n");
    echo(’
    ’."\n");
    }
    $kid = $_GET[‚id‘];
    echo(‚

    Kommentare

    ‘."\n");
    echo(’
      ’."\n");
      $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(’
    • ’."\n");
      echo(’’.$kommentare->name.’ (’.$kommentare->datum.’) schrieb:
      ‚."\n");
      echo($kommentare->naricht);
      }
      echo(‘
    • ’."\n");
      echo(’
    ’."\n");
    echo(‚

    Kommentar schreiben

    ‘."\n");
    echo(’’."\n");
    echo(‚Name (erforderlich)
    ‘."\n");
    echo(’
    ’."\n");
    echo(‚Email (erfordlich)
    ‘."\n");
    echo(’
    ’."\n");
    echo(‚Homepage
    ‘."\n");
    echo(’
    ’."\n");
    echo(‚Dein Kommentar
    ‘."\n");
    echo(’
    ’."\n");
    echo(’’);
    echo(’’."\n");
    echo(’’."\n");
    }else if(isset($_GET[‚action‘]) == ‚commentpost‘){
    „INSERT INTO news_kommentare (id,news_id,datum,name, text) VALUES (’’,’“.$_GET[‚id‘] ."’, ‚". date(„d.m.Y“) ."‘, ‚". mysql_real_escape_string($_POST[‚name‘]) ."‘, ‚". mysql_real_escape_string($_POST[‚text‘]) ."‘);"
    }else if(isset($_GET[‚mode‘]) == ‚archiv‘){
    echo(’
      ’."\n");
      $sql = „SELECT * FROM news ORDER BY id DESC“;
      $entry = mysql_query($sql,$datenbank) or die(mysql_error());
      while($news = mysql_fetch_object($entry))
      {
      echo(’
    • ’."\n");
      echo(’’.$news->title.’’."\n");
      echo(‚Geschrieben am ‚.$news->datum.‘ | Gespeichert unter ‚.$news->cat.‘‘."\n");
      echo(’
    • ’."\n");
      }
      echo(’
    ’."\n");
    }else if($_GET[‚sel‘] == ‚cat‘){
    $smcat = $_GET[‚cat‘];

    if($_GET[‚cat‘] == ‚rappelz‘){

    $avh = echo(‚Rappelz‘);

    }else if($_GET[‚cat‘] == ‚darkevolution‘){

    $avh = echo(‚DarkEvolution‘);

    }else if($_GET[‚cat‘] == ‚seite‘){

    $avh = echo(‚Seite‘);

    }else if($_GET[‚cat‘] == ‚events‘){

    $avh = echo(‚Events‘);

    }else if($_GET[‚cat‘] == ‚ankundigungen‘){

    $avh = echo(‚Ankündigungen‘);

    }else if($_GET[‚cat‘] == ‚wettbewerbe‘){

    $avh = echo(‚Wettbewerbe‘);

    }else{

    $avh = echo(‚Keine Kategorie‘);

    }

    echo('<h3>Alle Artikel der Kategorie: LEER</h3>'."\n");
    echo('<ul class="archive">'."\n");
    $sql = "SELECT * FROM news WHERE scat='".mysql_real_escape_string($smcat)."' ORDER BY id DESC";
    $entry = mysql_query($sql,$datenbank) or die(mysql_error());
    while($news = mysql_fetch_object($entry))
    {
    echo('<li>'."\n");
    echo('<a href="?p=news&amp;mode=view&id='.$news->id.'">'.$news->title.'</a>'."\n");
    echo('Geschrieben am '.$news->datum.'</a> | Gespeichert unter <a href="?p=news&amp;sel=cat&amp;cat='.$news->scat.'">'.$news->cat.'</a>'."\n");
    echo('</li>'."\n");
    }
    echo('</ul>'."\n");
    

    }else{
    $sql = „SELECT * FROM news ORDER BY id DESC LIMIT 0, 5“;
    $entry = mysql_query($sql,$datenbank) or die(mysql_error());
    while($news = mysql_fetch_object($entry))
    {
    echo(’

    ’."\n");
    echo(’

    ’.$news->title.’

    ’."\n");
    echo(’

    ’.$news->datum.‚Geschrieben von ‚.$news->autor.‘

    ‘."\n");
    echo(’
     
    ‚."\n");
    echo(‘
    ’."\n");
    echo($news->text);
    echo(‚

    WeiterlesenKommentare

    ‘."\n");
    echo(’
    ’."\n");
    echo(’
    ’."\n");
    }
    }
    ?>[/code]

    hi,

    ggf. wärs noch sinnvoll den insert weiter oben durchzuführen und dann erst die ausgabe
    rot => sinnvoll einmal innerhalb von der while schleife und dann doch wieder drausen?

    lg flo

    Nein einfach nur fehler beim kopieren. Danke für den hinweis wird direkt behoben!

    //UPDATE:

    <?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()); $news = mysql_fetch_object($entry); { echo('<div class="post">'."\n"); echo('<h2 class="title"><a href="?p=news&amp;mode=view&amp;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&amp;user='.$news->autor.'">'.$news->autor.'</a></span></p>'."\n"); echo('<div style="clear: both;">&nbsp;</div>'."\n"); echo('<div class="entry">'."\n"); echo(htmlspecialchars($news->text)); echo('</div>'."\n"); echo('</div>'."\n"); } $kid = $_GET['id']; echo('<h4>Kommentare</h4>'."\n"); echo('<ul>'."\n"); $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('<li>'."\n"); echo('<a href="'.$kommentare->homepage.'" target="_blank">'.$kommentare->name.'</a> ('.$kommentare->datum.') schrieb: <br />'."\n"); echo($kommentare->naricht); echo('</li>'."\n"); } echo('</ul>'."\n"); echo('<h4>Kommentar schreiben</h4>'."\n"); echo('<form action="?p=news&amp;mode=view&amp;id='.$news->id.'&amp;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"); }else if(isset($_GET['action']) == 'commentpost'){ "INSERT INTO news_kommentare (id,news_id,datum,name, text) VALUES ('','".$_GET['id'] ."', '". date("d.m.Y") ."', '". mysql_real_escape_string($_POST['name']) ."', '". mysql_real_escape_string($_POST['text']) ."');" }else if(isset($_GET['mode']) == 'archiv'){

    Irgendwo steckt jetzt da ein Wurm drin… ich weiß nicht wo… aber liegt es beim INSERT INTO befehl? Das mit intval() mach ich noch, erstmal so zum Laufen bringen dann umbauen :slight_smile:!

    hi,

    [quote]<?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());
    $news = mysql_fetch_object($entry);
    {
    echo(’

    ’."\n");
    echo(’

    ’.$news->title.’

    ’."\n");
    echo(’

    ’.$news->datum.‘Geschrieben von ‘.$news->autor.’

    ’."\n");
    echo(’
     
    ‘."\n");
    echo(’
    ’."\n");
    echo(htmlspecialchars($news->text));
    echo(’
    ’."\n");
    echo(’
    ’."\n");
    }
    $kid = $_GET[‘id’];
    echo(‘

    Kommentare

    ’."\n");
    echo(’
      ’."\n");
      $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(’
    • ’."\n");
      echo(’’.$kommentare->name.’ (’.$kommentare->datum.’) schrieb:
      ‘."\n");
      echo($kommentare->na[size=200]ch[/size]richt);
      echo(’
    • ’."\n");
      }
      echo(’
    ’."\n");
    echo(‘

    Kommentar schreiben

    ’."\n");
    echo(’’."\n");
    echo(‘Name (erforderlich)
    ’."\n");
    echo(’
    ’."\n");
    echo(‘Email (erfordlich)
    ’."\n");
    echo(’
    ’."\n");
    echo(‘Homepage
    ’."\n");
    echo(’
    ’."\n");
    echo(‘Dein Kommentar
    ’."\n");
    echo(’
    ’."\n");
    echo(’’);
    echo(’’."\n");
    echo(’’."\n");
    }else if(isset($_GET[‘action’]) == ‘commentpost’){
    $insert = “INSERT INTO news_kommentare (id,news_id,datum,name, text) VALUES (’’,’”.$_GET[‘id’] ."’, ‘". date(“d.m.Y”) ."’, ‘". mysql_real_escape_string($_POST[‘name’]) ."’, ‘". mysql_real_escape_string($_POST[‘text’]) ."’);";
    mysql_query($insert);
    }else if(isset($_GET[‘mode’]) == ‘archiv’){[/quote]

    das wären die gröbsten fehler wo ich aufn ersten blick erkannt hab … aber ne genaue fehlermeldung wäre nicht schlecht ^^

    lg flo

    Hätte ich eine Fehlermeldung bekommen hätte ich sie hier gepostet wenn ich dadurch nicht selbst den fehler gefunden hätte.

    Da wir gerade bei Fehler sind… ich hab bei einer Seite ich glaub der hier Kopierte Code stammte auch davon eine if()-Schleife als Kommentar makiert da sie probleme machte… und ich nicht schlau werde wo :confused: ich kopier das hier mal rein:

    [code]# if($_GET[‚cat‘] == ‚rappelz‘){

    $avh = echo(‚Rappelz‘);

    }else if($_GET[‚cat‘] == ‚darkevolution‘){

    $avh = echo(‚DarkEvolution‘);

    }else if($_GET[‚cat‘] == ‚seite‘){

    $avh = echo(‚Seite‘);

    }else if($_GET[‚cat‘] == ‚events‘){

    $avh = echo(‚Events‘);

    }else if($_GET[‚cat‘] == ‚ankundigungen‘){

    $avh = echo(‚Ankündigungen‘);

    }else if($_GET[‚cat‘] == ‚wettbewerbe‘){

    $avh = echo(‚Wettbewerbe‘);

    }else{

    $avh = echo(‚Keine Kategorie‘);

    }[/code]

    PS: Nach dem ich noch ;" (wtf warum so??? vlt. vertippt…) auf '; änderte ging auch der mir bekannte SyntaxHighlight wieder (da alles rot darunter war viel mir auf das was falsch war):

    $insert = "INSERT INTO news_kommentare (id,news_id,datum,name,text,email,url) VALUES ('','".$_GET['id'] ."', '". date("d.m.Y") ."', '". mysql_real_escape_string($_POST['name']) ."', '". mysql_real_escape_string($_POST['text']) ."', '". mysql_real_escape_string($_POST['email']) ."', '". mysql_real_escape_string($_POST['url']) .'")'; mysql_query($insert);

    //UPDATE:
    Wenn ich jetzt Testweise ein Kommentar versuche einzutragen sieht nach dem drücken des Send-Buttens die Seite so aus:

    Wenn ich in die Datenbank schaue ist auch kein neuer Eintrag vorhanden :stress:

    error_reporting(E_ALL); ini_set('display_errors', 1);
    http://www.if-schleife.de

    [quote=“SirZimt”]Da wir gerade bei Fehler sind… ich hab bei einer Seite ich glaub der hier Kopierte Code stammte auch davon eine if()-Schleife als Kommentar makiert da sie probleme machte… und ich nicht schlau werde wo :confused: ich kopier das hier mal rein:

    [code]# if($_GET[‘cat’] == ‘rappelz’){

    $avh = echo(‘Rappelz’);

    }else if($_GET[‘cat’] == ‘darkevolution’){

    $avh = echo(‘DarkEvolution’);

    }else if($_GET[‘cat’] == ‘seite’){

    $avh = echo(‘Seite’);

    }else if($_GET[‘cat’] == ‘events’){

    $avh = echo(‘Events’);

    }else if($_GET[‘cat’] == ‘ankundigungen’){

    $avh = echo(‘Ankündigungen’);

    }else if($_GET[‘cat’] == ‘wettbewerbe’){

    $avh = echo(‘Wettbewerbe’);

    }else{

    $avh = echo(‘Keine Kategorie’);

    }[/code]

    PS: Nach dem ich noch ;" (wtf warum so??? vlt. vertippt…) auf '; änderte ging auch der mir bekannte SyntaxHighlight wieder (da alles rot darunter war viel mir auf das was falsch war):

    $insert = "INSERT INTO news_kommentare (id,news_id,datum,name,text,email,url) VALUES ('','".$_GET['id'] ."', '". date("d.m.Y") ."', '". mysql_real_escape_string($_POST['name']) ."', '". mysql_real_escape_string($_POST['text']) ."', '". mysql_real_escape_string($_POST['email']) ."', '". mysql_real_escape_string($_POST['url']) .'")'; mysql_query($insert);[/quote]

    So zu deinem ersten Problem:
    es gibt kein echo des in die variable schreibt wenn dann so $avh = ‘blabla’;

    So zum 2ten:
    das stimmt so nicht weil du dann die einfachen hochkommas im sql ausdruck nicht mehr richtig hast …

    [quote][size=200]$insert = "INSERT INTO news_kommentare (id,news_id,datum,name,text,email,url) VALUES (’’,’".$_GET[‘id’] ."’, ‘". date(“d.m.Y”) ."’, ‘". mysql_real_escape_string($_POST[‘name’]) ."’, ‘". mysql_real_escape_string($_POST[‘text’]) ."’, ‘". mysql_real_escape_string($_POST[‘email’]) ."’, '". mysql_real_escape_string($_POST[‘url’]) ."’)";
    mysql_query($insert);[/size][/quote]

    Hab des mal größer gemacht sonst überseht mans so schnell

    lg

    //edit: Das kein eintrag in der datenbank kommt ist klar du hast das sql statment ja auch nicht richtig (siehe hochkomma)

    Bekomme jetzt mal 2 Fehlermeldungen:

    Parse error: syntax error, unexpected ‘}’ in /var/www/vhosts/antribute.eu/darkevolution/content/pages/news.php on line 4

    und:

    Parse error: syntax error, unexpected T_ECHO on line 63

    Hier mal Zeile 2-8:

    if($_GET['cat'] == 'rappelz'){ $avh = 'Rappelz' }else if($_GET['cat'] == 'darkevolution'){ $avh = 'DarkEvolution' }else if($_GET['cat'] == 'seite'){ $avh = 'Seite' }else if($_GET['cat'] == 'events'){

    Zeile 60-65:

    mysql_query($insert); echo('<p>Dein Kommentar wurde eingetragen!<br />Es wird nun von einem Admin gepr&uuml;ft und freigeschaltet!<br />&nbsp;</p>'."\n"); echo('<a href="?p=news&amp;mode=view&amp;id='.echo($idoverall).'>Zur&uuml;ck zum Beitrag</a>'."\n"); }else if(isset($_GET['mode']) == 'archiv'){ echo('<ul class="archive">'."\n"); $sql = "SELECT * FROM news ORDER BY id DESC";

    Wie wär’s mit Semikolons nach Strings? :p

    $string = „Blubb“;

    Mfg :wink2:

    [quote=„Mgier“]Wie wär’s mit Semikolons nach Strings? :p

    $string = „Blubb“;

    Mfg :wink2:[/quote]

    Danke hab darauf nicht geachtet. Sollte mich echt als hinlegen mal nach Arbeit statt immer wach bleiben…