Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Kommentarscript - benötige ip-sperre

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
neffetshd
PostRank 4
PostRank 4
Beiträge: 134
Registriert: 30.05.2009, 08:01
Wohnort: Heidelberg

Beitrag von neffetshd » 21.09.2009, 11:24

Hallo liebes Forum,

ich benötige für mein bestehendes Kommentarscript 3 kleine Codeschnipsel:

1. ip-sperre
2. Wortumbruch bei mehr als 15 Buchstaben
3. Badword-Filter

Weiß jemand, wo man das bekommen kann? Oder kann es jemand schreiben? Was würde das kosten?

Das Kommentarscript ist in php und javascript geschrieben, aber ziemlich einfach mit nur den allernötigsten Funktionen. Mittlerweile spammen jedoch einige Schulkids öfter mal und das Löschen per Hand ist zeitaufwändig.

Leider kenne ich mich nicht mit php usw. aus.

Gruß

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


gnark
PostRank 8
PostRank 8
Beiträge: 920
Registriert: 23.01.2009, 15:12

Beitrag von gnark » 21.09.2009, 14:35

da gibts doch unendlich viele gästebuch oder whatever-scripts zum runterladen, wo sowas eingebaut ist
https://das-dass.de ... übrigens: es heisst sitewide mit "t"

neffetshd
PostRank 4
PostRank 4
Beiträge: 134
Registriert: 30.05.2009, 08:01
Wohnort: Heidelberg

Beitrag von neffetshd » 21.09.2009, 17:25

Das habe ich auch schon gefunden, aber ich kann wirklich kein php und javascript. Ich weiß nicht, welche Angabe für was steht und wohin diese eingefügt wird. Ich habe das schon einige Tage lang probiert; dass ich hier schreibe, ist nur der letzte Versuch, das in den Griff zu bekommen.

neffetshd
PostRank 4
PostRank 4
Beiträge: 134
Registriert: 30.05.2009, 08:01
Wohnort: Heidelberg

Beitrag von neffetshd » 21.09.2009, 22:30

So, ich habe z. B. den Code für einen Badword-Filter gefunden, aber wie bekomme ich den nun in mein Kommentarscript? Wohin wird das eingefügt?
<?php
// Badwordfilter
$badwords = array(
"Wort1", "Wort2", "Wort3", "Wort4", "Wort5", "Wort6", "Wort7", "Wort8", "Wort9", "Wort10",
"Wort11","Wort12", "Wort13", "Wort14", "Wort15", "Wort16", "Wort17", "Wort18", "Wort19",
"Wort20"
);

function badwords($text) {
global $badwords;
foreach ($badwords as $b) {
$r = $b[0].str_repeat("*", strlen($b)-2).$b[strlen($b)-1];
if (function_exists("str_ireplace")) {
$text = str_ireplace($b, $r, $text);
}
else {
$text = str_replace($b, $r, $text);
}
}
return $text;
}
?>

Aufruf der Funktion mit:
<?php
$Kommentar = badwords($Kommentar);
?>

Der ist von dieser Seite: https://www.homepage-total.de/bausteine ... 4.php#bs_4


Und das ist mein Kommentarscript. Es wurde mir freundlicherweise kostenlos und ohne Werbung zur Verfügung gestellt von https://www.e-hahn.de/

Könnte mir jemand zumindest einen Tipp geben, wohin das obere hier eingefügt wird?

<form name="Form" action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post" onSubmit="return checkform();">

<?php
// Erstellen einer Rechenaufgabe
$Zahl_1 = intval(rand(1, 5));
$Zahl_2 = intval(rand(1, 5));

$mailto = "@";

if ($_POST) {
$Page = $_POST["Page"];
$datum = date("d.m.y, H:i",time());
$User = addslashes($_POST["User"]);
$Mail = addslashes($_POST["eMail"]);
$Comment = addslashes($_POST["Comment"]);

// ... und die Rechenaufgabe FALSCH geloest wurde...
if ($_POST['number'] != md5($_POST['arithmetic'])) {

// ...dann eine Fehlermeldung ausgeben!
echo "<p style=\"text-align: center\"><strong><span class=\"fc4\">Die Rechenaufgabe wurde falsch gel&ouml;st!</span></strong></p>";

}

// Ansonsten, wenn die Rechenaufgabe RICHTIG geloest wurde stimmt...
if ($_POST['number'] == md5($_POST['arithmetic'])) {

if ($Page !="" && $User !="" && $Comment !="") {
$file = "comments/".$Page.".txt";

// Kommentar schreiben
$fp = fopen($file,"a+");
fputs($fp,"<p><strong>$User</strong> ($datum):<br />$Comment</p>\n");
fclose($fp);
}

// E-Mail versenden
$betreff = "Neuer Kommentar";
$text = "Datum: $datum - Seite: \"$Page\" - Autor: $User\nE-Mail: $eMail\n\nKommentar: $Comment\r";
@mail($mailto,$betreff,$text,"From: ".$mailto);
}
}
?>
<table style="margin-top: 10px">
<tr>
<td colspan="2"><strong>Kommentar schreiben:</strong><br /><br />
<textarea style="width: 99%" rows="4" cols="21" name="Comment"></textarea>
</td>
</tr>
<tr>
<td style="width: 25%"><input type="text" name="User" size="28"></td>
<td style="width: 75%">Name</td>
</tr>
<tr>
<td style="width: 25%">
<input name="number" type="hidden" id="number" value="<?php echo md5(( $Zahl_1 + $Zahl_2 )); ?>"/>
<input name="arithmetic" type="text" id="arithmetic" size="28" />
</td>
<td style="width: 75%">Spamschutz (Wieviel ist <?php echo $Zahl_1; ?>+<?php echo $Zahl_2; ?>?)</td>
</tr>
<tr>
<td style="width: 25%"><input type="text" name="eMail" size="28"></td>
<td style="width: 75%">E-Mail (Optional, wird nicht veröffentlicht)</td>
</tr>
<tr>
<td style="width: 25%">
<p style="margin-top:22;">
<?php
// Wenn KEIN Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button anklickbar sein
if ($_COOKIE["spam_protection"] != "spam_protection") {
?>
<input class="button" type="submit" name="sendfeedback" value="Speichern" />
<?php
}
// Wenn aber ein Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button blockiert werden
if ($_COOKIE["spam_protection"] == "spam_protection") {
?>
<input class="button" type="submit" name="sendfeedback" value="Speichern" disabled="true" />
<?php
}
?>
</p>
</td>
<td style="width: 75%" align="right">[Kommentare <a href="" onclick="javascript:switchlayer('Comments'); return false;" title="">ein- oder ausblenden</a>]</td>
</tr>
</table>
<?php
// Dateiname ermitteln
$titel=explode("/","$_SERVER[PHP_SELF]");
$file=explode('.',$titel[count($titel)-1]);
echo " <input type='hidden' name='Page' value='".$file[0]."'>\r";
?>

<div id="Comments" onclick="javascript:switchlayer('Comments'); return false;">

<?php
// Kommentarausgabe
$ausgabe = "comments/".$file[0].".txt";
if(file_exists($ausgabe)) {
htmlentities(readfile($ausgabe));
}
else {
echo "Es sind noch keine Kommentare vorhanden.";
}
?>
</div>

</form>

gnark
PostRank 8
PostRank 8
Beiträge: 920
Registriert: 23.01.2009, 15:12

Beitrag von gnark » 22.09.2009, 07:14

Steht doch sogar in dem file drin:

Code: Alles auswählen

Aufruf der Funktion mit&#58;
<?php
 $Kommentar = badwords&#40;$Kommentar&#41;;
?>

Code: Alles auswählen

<form name="Form" action="<?php echo $_SERVER&#91;"PHP_SELF"&#93; ?>" method="post" onSubmit="return checkform&#40;&#41;;">

<?php
// Badwordfilter
$badwords = array&#40;
 "Wort1", "Wort2", "Wort3", "Wort4", "Wort5", "Wort6", "Wort7", "Wort8", "Wort9", "Wort10", 
 "Wort11","Wort12", "Wort13", "Wort14", "Wort15", "Wort16", "Wort17", "Wort18", "Wort19", 
 "Wort20"
  &#41;;

function badwords&#40;$text&#41; &#123;
 global $badwords;
 foreach &#40;$badwords as $b&#41; &#123;
  $r = $b&#91;0&#93;.str_repeat&#40;"*", strlen&#40;$b&#41;-2&#41;.$b&#91;strlen&#40;$b&#41;-1&#93;;
  if &#40;function_exists&#40;"str_ireplace"&#41;&#41; &#123;
   $text = str_ireplace&#40;$b, $r, $text&#41;;
  &#125;
  else &#123;
   $text = str_replace&#40;$b, $r, $text&#41;;
   &#125;
 &#125;
 return $text;
&#125;



// Erstellen einer Rechenaufgabe
$Zahl_1 = intval&#40;rand&#40;1, 5&#41;&#41;;
$Zahl_2 = intval&#40;rand&#40;1, 5&#41;&#41;;

$mailto = "@";

if &#40;$_POST&#41; &#123;
    $Page = $_POST&#91;"Page"&#93;;
    $datum = date&#40;"d.m.y, H&#58;i",time&#40;&#41;&#41;;
    $User = addslashes&#40;$_POST&#91;"User"&#93;&#41;;
    $Mail = addslashes&#40;$_POST&#91;"eMail"&#93;&#41;;
    $Comment = addslashes&#40;$_POST&#91;"Comment"&#93;&#41;;
//Hier auf badwords testen
 $Comment  = badwords&#40;$Comment &#41;;
    
    // ... und die Rechenaufgabe FALSCH geloest wurde...
    if &#40;$_POST&#91;'number'&#93; != md5&#40;$_POST&#91;'arithmetic'&#93;&#41;&#41; &#123;
        
        // ...dann eine Fehlermeldung ausgeben!
        echo "<p style=\"text-align&#58; center\"><strong><span class=\"fc4\">Die Rechenaufgabe wurde falsch gel&ouml;st!</span></strong></p>";
        
    &#125;
    
    // Ansonsten, wenn die Rechenaufgabe RICHTIG geloest wurde stimmt...
    if &#40;$_POST&#91;'number'&#93; == md5&#40;$_POST&#91;'arithmetic'&#93;&#41;&#41; &#123;
        
        if &#40;$Page !="" && $User !="" && $Comment !=""&#41; &#123;
            $file = "comments/".$Page.".txt";
            
            // Kommentar schreiben
            $fp = fopen&#40;$file,"a+"&#41;;
            fputs&#40;$fp,"<p><strong>$User</strong> &#40;$datum&#41;&#58;<br />$Comment</p>\n"&#41;;
            fclose&#40;$fp&#41;;
        &#125;
        
        // E-Mail versenden
        $betreff = "Neuer Kommentar";
        $text = "Datum&#58; $datum - Seite&#58; \"$Page\" - Autor&#58; $User\nE-Mail&#58; $eMail\n\nKommentar&#58; $Comment\r";
        @mail&#40;$mailto,$betreff,$text,"From&#58; ".$mailto&#41;;
    &#125;
&#125;
?>
    <table style="margin-top&#58; 10px">
        <tr>
            <td colspan="2"><strong>Kommentar schreiben&#58;</strong><br /><br />
				<textarea style="width&#58; 99%" rows="4" cols="21" name="Comment"></textarea>
			</td>
        </tr>
		<tr>
            <td style="width&#58; 25%"><input type="text" name="User" size="28"></td>
            <td style="width&#58; 75%">Name</td>
        </tr>
		<tr>
            <td style="width&#58; 25%">
			    <input name="number" type="hidden" id="number"  value="<?php echo md5&#40;&#40; $Zahl_1 + $Zahl_2 &#41;&#41;; ?>"/>
				<input name="arithmetic" type="text" id="arithmetic" size="28" />
            </td>
            <td style="width&#58; 75%">Spamschutz &#40;Wieviel ist <?php echo $Zahl_1; ?>+<?php echo $Zahl_2; ?>?&#41;</td>
        </tr>
        <tr>
            <td style="width&#58; 25%"><input type="text" name="eMail" size="28"></td>
            <td style="width&#58; 75%">E-Mail &#40;Optional, wird nicht veröffentlicht&#41;</td>
        </tr>
        <tr>
            <td style="width&#58; 25%">
			    <p style="margin-top&#58;22;">
					<?php
						// Wenn KEIN Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button anklickbar sein
						if &#40;$_COOKIE&#91;"spam_protection"&#93; != "spam_protection"&#41; &#123;
					?>
					<input class="button" type="submit" name="sendfeedback" value="Speichern" />
					<?php
						&#125;
						// Wenn aber ein Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button blockiert werden
						if &#40;$_COOKIE&#91;"spam_protection"&#93; == "spam_protection"&#41; &#123;
					?>
					<input class="button" type="submit" name="sendfeedback" value="Speichern" disabled="true" />
					<?php
						&#125;
					?>
				</p>
			</td>
			<td style="width&#58; 75%" align="right">&#91;Kommentare <a href="" onclick="javascript&#58;switchlayer&#40;'Comments'&#41;; return false;" title="">ein- oder ausblenden</a>&#93;</td>
        </tr>
    </table>
<?php
 // Dateiname ermitteln
 $titel=explode&#40;"/","$_SERVER&#91;PHP_SELF&#93;"&#41;;
 $file=explode&#40;'.',$titel&#91;count&#40;$titel&#41;-1&#93;&#41;;
 echo "   <input type='hidden' name='Page' value='".$file&#91;0&#93;."'>\r";
?>

			<div id="Comments" onclick="javascript&#58;switchlayer&#40;'Comments'&#41;; return false;">

<?php
 // Kommentarausgabe
 $ausgabe = "comments/".$file&#91;0&#93;.".txt";
 if&#40;file_exists&#40;$ausgabe&#41;&#41; &#123;
  htmlentities&#40;readfile&#40;$ausgabe&#41;&#41;;
  &#125;
 else &#123;
  echo "Es sind noch keine Kommentare vorhanden.";
 &#125;
?>
			</div>

</form>
habs nicht getestet, aber wenn die beiden schnipsel ok sind, sollte es funzen
https://das-dass.de ... übrigens: es heisst sitewide mit "t"

gnark
PostRank 8
PostRank 8
Beiträge: 920
Registriert: 23.01.2009, 15:12

Beitrag von gnark » 22.09.2009, 07:19

zeilenumbruch:
https://us3.php.net/manual/de/function.wordwrap.php


also in deinem code:
$Comment = wordwrap($Comment, 25, "<br />" , true);
https://das-dass.de ... übrigens: es heisst sitewide mit "t"

neffetshd
PostRank 4
PostRank 4
Beiträge: 134
Registriert: 30.05.2009, 08:01
Wohnort: Heidelberg

Beitrag von neffetshd » 22.09.2009, 09:27

danke gnark, das funktioniert so!!

Naja, ich dachte nur, dass das Kommentar gar nicht gesendet wird, wenn so ein Wort darin vorkommt, dann hätte sich das mit der ip-sperre eigentlich auch erledigt.

Jetzt benötige ich noch eine ip-sperre, damit man nur ein Kommentar innerhalb von 4 Minuten schreiben kann. Ich wäre sehr froh, wenn mir jemand dabei helfen könnte.

Gibt es eine Möglichkeit in javascript einen kleinen code einzubauen, damit ein Kommentar, das ein Wort enthält, das über 25 Zeichen lang ist, gar nicht gesendet wird?

Ich dachte da an so etwas, aber das hier gilt leider nur für die gesamte Kommentarbox.

Code: Alles auswählen

else if &#40;document.Form.Comment.value.length > 2000&#41; &#123;
        alert&#40;"Dein Kommentar ist zu lang!\rMaximal 2000 Zeichen."&#41;
        document.Form.Comment.focus&#40;&#41;;
    return false&#125;
Der Code bricht leider nur die ganze Zeile um, nicht nur zu lange Wörter...

Code: Alles auswählen

$Comment = wordwrap&#40;$Comment, 25, "<br />" , true&#41;;

gnark
PostRank 8
PostRank 8
Beiträge: 920
Registriert: 23.01.2009, 15:12

Beitrag von gnark » 22.09.2009, 16:29

In JS kann man das auch machen, ist aber kein sicherer Schutz.
Braucht nur einer JS nicht aktiviert haben.


probier mal das von hier: https://www.homepage-total.de/bausteine ... teine4.php

die funktion oben einbauen

Code: Alles auswählen

<?php
// Lange Wörter mit Leerzeichen teilen
function cut_long_words&#40;$Kommentar,$len=25&#41;&#123;
$neutext = $Kommentar;
do&#123;
 $Kommentar = $neutext;
 $neutext = preg_replace&#40;'~&#40;^|\s&#41;&#40;\S&#123;'.$len.'&#125;&#41;&#40;\S&#41;~S', '\1\2 \3', $Kommentar&#41;;
  &#125; while &#40;$neutext != $Kommentar&#41;;
 return $neutext;
&#125;
?> 
und dann unten

Code: Alles auswählen

$Comment = cut_long_words&#40;$Comment &#41;;

edit: das mit der ip-sperre ist natürlich auch machbar, aber bisschen viel code und arbeit, ums hier reinzuposten
https://das-dass.de ... übrigens: es heisst sitewide mit "t"

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag