Moin,
ist es möglich, wie bei den eigentlichen Einträgen im GB, Kommentare auch nur nach vorheriger Freischaltung bzw. Eingabe eines Sicherheitscodes zuzulassen ? Könnte ggf. die Kommentarfunktion auch ganz unterbunden werden, um Spammer auszuschließen ? Hab´ ich im config File ein Feature übersehen ? :gaga:
Kann man irgendwie die derzeit ca. 400 Spam-Kommentare komplett löschen, oder muß das einzeln geschehen ?
/uploads/emoticons/icon_e_surprised.gif.a005678239f11b45b64b526b2c82e9a1.gif\" alt=\":o\" />
Vielen Dank für die Hilfe.
/uploads/emoticons/icon_e_wink.gif.c059000ae48ff64afa53be0962c021f2.gif\" alt=\":wink:\" />
schon mal was von der Suchfunktion gehört?
ob ich die wohl schon benutzt habe ...
sehr hilfreiche Anmerkung für einen Admin ... tztztz ...
Welche Version nutzt du?
URL?
Ich möchte einmal sehen was für Spam du dort drin hast.
Vielen Dank für die Nachfrage !
Version 2.12
Im eigentliche GB ist ja fast nix los, weil die Sicherheitsabfrage gut greift und ohnehin sehr wenige Besucher auf die Seite kommen.
Die Post geht aber hier ab:
http://www.hannover-brass.de/guestbook/pgb/kommentar.php?id=5In den anderen Posts habe ich die Spam-Kommentare bereits alle einzeln per Hand gelöscht. Es wäre schön, wenn man auch alle auf einmal löschen könnte. Ist es denn nun möglich, die Kommentare global zu unterbinden ?
Vielen Dank für die Mühe. - Frank -
Hattest du vorher schon mal eine andere Version des PGB installiert?
global Kommentare abschalten:
config.inc.php:
$gb_allowkom = 0;
Da sind Kommentare drin, die älter als die Beiträge sind!!!
Vielen Dank ür den Hinweis auf die Variable.
Den Hinweis mit den Kommentaren, welche älter als die Beiträge sind, konnte ich jetzt nicht nachvollziehen. Wenn die Spam-Kommentare auf irgendeinem Weg am GB vorbei direkt in die Datenbank geschrieben werden, müssten sich jetzt ja auch weitere Einträge dort ansammeln, obwohl das Kommentar-Formular abgeschaltet ist. Ich bin schon gespannt. Eine ältere Version des Gästebuchs hatte ich auf diesem Webspace nicht installiert.
Die Implementierung einer weiteren Sicherheitsabfrage für die Eingabe von Kommentaren wäre sicher die beste Lösung auf Dauer.
Viele Grüße, -Frank-
Auch mal eine Frage,
wiekönnte man das machen, das keiner Komentare Schreiben kann außer der Admin ?
Müsste man was im Code verändern; nichts weltbewegendes. Aber was soll das bringen? In einem Gästebuch wo nur der eigene Admin etwas schreiben kann? Falls du dies benötigst, dann schreib ich dir schnell was.
Grüße
- Editiert von k00ni am 07.02.2008, 11:15 -
Es geht mir darum das niemand Komentare zum Gästebuch eintrag schreiben kann außer der Admin.
Ich hatte das falsch gelesen: Ich dachte, nur der Admin solle Gästebucheinträge schreiben können... ist wahrscheinlich die Hitze bei uns
/uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-D\" /> :gaga:
Nur noch Admins können zu Beiträgen Kommentare schreibenIn der Datei
kommentar.php ca. in
Zeile 16 nach folgendem Code
if($gb_allowkom !=1) {
header(\\\"Location: index.php\\\");
exit();
}
diesen hier schreiben
else
{
if ($user[\\\'usertyp\\\'] != \\\'admin\\\')
{
header(\\\"Location: index.php\\\");
exit();
}
}
Damit kann keiner mehr ein Kommentar verfassen, es sei denn, er ist ein Administrator. Wird hingegen die Einstellung
$gb_allowkom wieder auf
1 gesetzt, verfällt die Einschränkung, dass nur noch Administratoren Kommentare schreiben können.
...aber wie unterbinde ich nun den Spam in den Kommentaren?
dazu konnte ich nun im laufenden Thread nix entnehmen.
Ich habe das Problem auch! ==>> www.utcd.de
So Long Gulli
...aber wie unterbinde ich nun den Spam in den Kommentaren?[/quote]
Spam wird entweder von Bots verursacht, oder von Menschen, die sehr viel Zeit haben. Wenn du es mit ersterem zu tun hast, dann kannst du dem einen (kleinen) Riegel vorschieben, indem du Kommentare nur von Usern zulässt. Du gewährst also im Allgemeinen Gästen, worunter ja auch Bots sein Können, keine Möglichkeit irgendetwas zu posten (Threads, Kommentare, etc.) Eine weitere Möglichkeit wäre eine Captcha abfrage, wobei zu hören ist, dass diese immer wieder umgangen wird; die Bots werden eben auch immer schlauer. :gaga:
Hast du es mit zweiterem zu tun, dann gibts wenig. Denn er is ein intelligentes Wesen und kann somit jegliche Sicherheitsabfragen erfolgreich abschließen. Diese Art von Spam könnte man nur begrenzen, wenn man bspw. im Gästebuch nur 3 Kommentare pro Stunde zu lässt, also eine Zeitsperre einbaut. Aber das sind alles nur Notlösungen.
dazu konnte ich nun im laufenden Thread nix entnehmen.Ich habe das Problem auch!
[/quote]
Bei dir auf der Seite gibts eher Spam bei den normalen Gästebuch einträgen. Ich kenn das nicht wirklich, aber schau, ob du Gästen nicht verbieten kannst, Einträge zu schreiben. Wenn das nicht geht, oder du das nicht willst, gäbe es nur noch die Möglichkeit einer Sicherheitsabfrage. (bspw. Captcha)
Grüße
nun meine nächste Frage,
tolle erklärung übrigens :H: , gibt es das zum Einbau für das Gästebuch speziel für die Kommentare
So Long Gulli
Original von k00ni Ich hatte das falsch gelesen: Ich dachte, nur der Admin solle Gästebucheinträge schreiben können... ist wahrscheinlich die Hitze bei uns /uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-D\" /> :gaga:
Nur noch Admins können zu Beiträgen Kommentare schreiben
In der Datei kommentar.php ca. in Zeile 16 nach folgendem Code
if($gb_allowkom !=1) {
header(\"Location: index.php\");
exit();
}
diesen hier schreiben
else
{
if ($user[\'usertyp\'] != \'admin\')
{
header(\"Location: index.php\");
exit();
}
}
Damit kann keiner mehr ein Kommentar verfassen, es sei denn, er ist ein Administrator. Wird hingegen die Einstellung $gb_allowkom wieder auf 1 gesetzt, verfällt die Einschränkung, dass nur noch Administratoren Kommentare schreiben können.
[/quote]
So, habe das mal versucht, habe bei der Einstellung gb_allowkom auf 1 gesetzt, und in der kommentar.php den code hinzugefügt.
jetzt erscheint wenn man auf Komentar geht folgendes:
Warning: Unexpected character in input: \'\\\' (ASCII=92) state=1 in /www/htdocs/w007f07a/GB/kommentar.php on line 25
Parse error: syntax error, unexpected T_STRING, expecting \']\' in /www/htdocs/w007f07a/GB/kommentar.php on line 31
[/quote]
Poste mal bitte den Inhalt der Datei von Zeile 0 bis Zeile 31.
Von Anfang bis 31
<?php
//##############################################################################
//## pGB - Kommentare - anybody would give his senf zum Thema ##
//## Thomas Ehrhardt 2005 ##
//## www.powie.de ##
//##############################################################################
// 09.11.2003 - Session Nickname einsetzen
// 20.10.2002 - Globale Sessiondaten in Use
// 16.10.2005 - korrekt Blocken wenn keine Kommentare erlaubt
//##############################################################################
require(\"pgb_main.php\");
require(\"kopf.php\");
include(\"head.php\");
//TPLs
$TGBRow = new Template($pgbtpldir.\"/gb_row.html\");
if($gb_allowkom !=1) {
header(\"Location: index.php\");
exit();
}
else
{
if ($user[\'usertyp\'] != \'admin\')
{
header(\"Location: index.php\");
exit();
}
}
$id = $_REQUEST[\'id\']; //ID des Eintrages
Mahlzeit,
Warning: Unexpected character in input: \'\\\' (ASCII=92) state=1 in /www/htdocs/w007f07a/GB/kommentar.php on line 25[/quote]
Diese Meldung kommt, weil du wahrscheinlich unter anderem bei
if ($user[\\\'usertyp\\\'] != \\\'admin\\\')
die Backslashs gelassen hast, wie er sie oben bei mir eingefügt hatte. Diese müssen rausgemacht werden!
Weiterhin war meine Lösung unvollständig. Zur Zeit läuft hier noch ein Thread, bei dem es um das Einsenden von News geht, was nur Registrierten erlaubt werden soll. Da war es ähnlich.
Nun nochmal ganz von vorn: Schreiben von Kommentaren nur durch den Admin möglich.
1. Schritt: Die veränderte Datei kommentar.php durch die Originale von Powie ersetzen.
2. Schritt: Nach diesem hier
require(\"pgb_main.php\");
require(\"kopf.php\");
include(\"head.php\");
das hier schreiben
include(\"login.inc.php\");
3. Schritt Nach diesem hier
if($gb_allowkom !=1)
{
header(\"Location: index.php\");
exit();
}
wieder das hier schreiben
else
{
if ($user[\'usertyp\'] != \'admin\')
{
header(\"Location: index.php\");
exit();
}
}
4. Schritt: Nochmal den Code nach Fehlern und bspw. falsch gesetzten Backslashes ( \\ ) durchschauen.
Erklärung:
Warum der Code nicht funktionierte war einerseits, weil du bestimmt noch die Backslashes in den if-Abfragen drin hattest. Zum anderen fehlte die User-Authentifizierung. Das heißt, es wird nirgendwo geprüft, ob das ein Nutzer ist oder nur ein Gast. Somit ist dann nicht feststellbar, welchen Rang der Benutzer hat. Diese Authentifizierung wird in der Datei login.inc.php vollzogen, welche hier normalerweise nicht eingebaut ist.
Es wäre vielleicht eine Überlegung, dies fest in das Skript mit aufzunehmen. Denn in Zeiten des SPAM wollen vielleicht viele User nicht, dass die Kommentare ihrer Gästebucheinträge, total zugeschwemmt werden mit Werbung etc. Und bei vielen Seiten gehört das Gästebuch eh einer Person, also antwortet auch nur sie auf die Einträge.
Grüße
OK, habe es geändert,
nachdem ich auf Komentar klicke, mußich mich als Admin einloggen, sobald ich das gemacht habe kommt folgendes:
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w007f07a/GB/kopf.php:4) in /www/htdocs/w007f07a/GB/kommentar.php on line 27
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w007f07a/GB/kopf.php:4) in /www/htdocs/w007f07a/GB/kommentar.php on line 27
Dass liegt daran, dass er HTML ausgibt, bevor er den Cookie anlegt. Dies mag er nicht, aber das kann man aus der Welt schaffen.
Schreibe einfach vor dem hier
require(\"pgb_main.php\");
require(\"kopf.php\");
include(\"head.php\");
dass hier
include(\"login.inc.php\");
Also wie in meinem letzten Post, nur umgedreht.
/uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-D\" /> Sorry, hatte das nicht beachtet.
Grüße
Jut, hab ich gemacht.
jetzt kommt folgendes:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /www/htdocs/w007f07a/GB/login.inc.php on line 19
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/htdocs/w007f07a/GB/login.inc.php on line 20
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /www/htdocs/w007f07a/GB/login.inc.php on line 47
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/htdocs/w007f07a/GB/login.inc.php on line 48
und das Login feld, kann mich aber nicht einloggen.
Probier mal nach dem
require(\"pgb_main.php\");
das hier
include(\"login.inc.php\");
Muss also dann so aussehen:
require(\"pgb_main.php\");
include(\"login.inc.php\");
require(\"kopf.php\");
include(\"head.php\");
Hab ich jetzt so gemacht.
Nach dem ich mich eingeloogt habe kommt:
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w007f07a/GB/kopf.php:4) in /www/htdocs/w007f07a/GB/kommentar.php on line 28
<?php
//##############################################################################
//## pGB - Kommentare - anybody would give his senf zum Thema ##
//## Thomas Ehrhardt 2005 ##
//## www.powie.de ##
//##############################################################################
// 09.11.2003 - Session Nickname einsetzen
// 20.10.2002 - Globale Sessiondaten in Use
// 16.10.2005 - korrekt Blocken wenn keine Kommentare erlaubt
//##############################################################################
require(\"pgb_main.php\");
include(\"login.inc.php\");
require(\"kopf.php\");
include(\"head.php\");
//TPLs
$TGBRow = new Template($pgbtpldir.\"/gb_row.html\");
if($gb_allowkom !=1) {
header(\"Location: index.php\");
exit();
}
else
{
if ($user[\'usertyp\'] != \'admin\')
{
header(\"Location: index.php\");
exit();
}
}
$id = $_REQUEST[\'id\']; //ID des Eintrages
Eigentlich müsste es laufen, ich weiß nun echt nicht mehr warum. Das Problem ist, dass er bevor er den Cookie anlegt, noch etwas ausgibt, einen HTML-Tag oder sonst irgendwas.
Das Einzigste was mir noch einfällt: Includest du die Seite und gibst du etwas aus, bevor du das Skript aufrufst... jegliche Art von Ausgabe, ob HTML-Tag, ein Leerzeichen oder Sonstwas, dürfen nicht vor der Cookieerzeugung stattfinden!
Grüße
Das kann so nicht laufen ...Hier der obere Teil:
$gb_allowkom = 1 -> false
-> nicht weiterleiten -> nicht in die if()
ob Admin oder nicht spielt hier keine Rolle da die Kommentare ja erlaubt sind
Kommentare nicht erlaubt -> $gb_allowkom = 0 -> true
und User kein Admin -> $user[\'usertyp\'] = user oder leer -> true
-> weiterleiten -> in die if()
Kommentare nicht erlaubt -> $gb_allowkom = 0 -> true
und User Admin -> $user[\'usertyp\'] = admin -> false
-> nicht weiterleiten -> nicht in die if()
*/
if ($gb_allowkom !=1 && $user[\'usertyp\'] != \'admin\') {
header(\'Location: index.php\');
exit();
}
/*
ENDE VOM NEUEN TEIL
*/
require(\"kopf.php\");
include(\"head.php\");
// weiter gehts wie gehabt
?>
Den Teil kannst du löschen, da sinnlos (header() nach einer Ausgabe ohne Ausgabepuffer ...)
if($gb_allowkom !=1) {
header(\"Location: index.php\");
exit();
}
else
{
if ($user[\'usertyp\'] != \'admin\')
{
header(\"Location: index.php\");
exit();
}
}
Ist es nicht einfacher die Captcha Abfrage der V2.12 auf auf die Kommentare auszuweiten? Ich habe in meinem Gästebuch auf biker-reise.de auch zunehmend damit zu kämpfen. Captcha bei den Kommentaren aktiviren und gut ist. Wie macht man das?
Hallo,
ich hatte dazu mal eine Anleitung geschrieben.
Hier ist der Link dazu. Wenn dir noch Informationen fehlen sollten, dann schreib einfach.
/uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />
Grüße
[edit]Vergiss meinen Beitrag, ich bin davon ausgegangen, dass du mit dem pSys arbeitest. Ich schaue mir gleich an, wie man Captcha in das pGästebuch integrieren kann. [/edit]
So auf die Schnelle habe ich keine Captcha-Funktion im pGB gefunden. Aber schön ist, dass dort die nötigen Dateien dafür vorhanden sind, man muss sie nur noch einbauen.
Folgendermaßen solltest du vorgehen (ich gehe von dem
pGb 2.12 aus!)
Sicherheitscodeabfrage für den User einbauen (Captcha-Bild + Eingabefeld)kommentar.php, ca. in
Zeile 204 steht folgendes:
\">
davor schreibst du folgendes
Sicherheitsabfrage:
(Bitte hier den untenstehenden Sicherheitscode eingeben)
Damit bindest du den Sicherheitscode + Eingabefeld ein und aktivierst die Captcha-Funktionalität (Codegenerierung etc.). Nicht wundern, es stimmt das du eine php-Datei einbindest. Das liegt daran, dass darin das Bild generiert wird, welches dann angezeigt wird.
Eingegebenen Code abfragenUm den Code abzufragen, den der User eingegeben hat, in der kommentar.php ca. in Zeile 70 nach folgendem
if ($text == \"\") {
msgBox(PGBLmsg_no_name_message);
require(\"fuss.php\");
exit();
}
folgendes eintragen
// Captcha-Code abfragen
if ($_POST [\'ccode\'] != $_SESSION [\'pcaptchacode\'])
{
msgbox(\"Der eingegebene Sicherheitscode ist falsch.\");
}
else
{
Und nach folgendem Code
msgbox(PGBLmsg_comment_saved);
eine einfache Klammer
}
Eingetragene Daten erhaltenDamit wäre es eigentlich geschafft. Nur das Problem ist: Was wenn man sich vertippt hat? Genau, alle Daten wären futsch. Dazu muss man aber nicht viel machen, damit die Daten erhalten bleiben.
Folgende Daten sind betroffen: Autor und Kommentartext.
Autor:kommentar.php, ca. in
Zeile 175 folgendes
\" name=\"author\" size=\"40\" maxlength=\"25\">
durch folgendes ersetzen
\" size=\"40\" maxlength=\"25\">
Hier wurde immer der Nickname eingetragen, nehme ich an. Ich war aber testweise als Admin angemeldet und er hat dort nichts eingetragen. Deshalb habe ich dies geändert. Wenn das stört, dann einfach oben nicht ändern.
Kommentartextkommentar.php, ca. in
Zeile 179 folgendes
durch folgendes ersetzen
So. Falls Probleme auftraten oder Ergänzungen / Anregungen, dann einfach posten
/uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />
Grüße
vielen lieben Dank für diese Anleitung. Ich habs drin und das scheint zu klappen. Allerdings musste ich eine Änderung machen:
msgbox(PGBLmsg_comment_saved); und danach die Klammer .... die war bei mir zuviel, musste ich weglassen. Ich verwende 2.12 aus dem CSV.
Ansonsten bin ich jetzt erst mal glücklich.
/uploads/emoticons/icon_e_wink.gif.c059000ae48ff64afa53be0962c021f2.gif\" alt=\":wink:\" />
Verbesserung wär dann noch, wenn man auf die Language Strings für das Captcha zurückgreift, aber das geht auch so, bei mir schreiben eh nur Deutsche. Zumindest ist so dem Bot der Saft abgedreht. :H:
Ich nochmal ... Die Abfrage ist drin, lässt sich aber offenbar umgehen
/uploads/emoticons/icon_e_sad.gif.cc8ba2b6b966c5e020020efa47702aab.gif\" alt=\":(\" /> wieder Spam drin!
Very good site. Thanksshttp://www.blablablaspam.htm cheap soma
[/quote]
Das war es also noch nicht ganz. Noch eine Idee?
Hallo,
kann es grad nicht testen, aber scheint so als prüft der zwar den Code, aber legt den Kommentar trotzdem an. Ich denke, das könnte an der Klammer liegen.
Mein Testkommentar wurde nicht angelegt; werden die da von dir freigeschaltet?
Grüße
ja, hab ich auch gemerkt. Bei meinem Test kommt die Meldung das der Code fehlt, aber ich krieg trotzdem die Mail mit dem Kommentar. Kommentare sind nicht moderiert und müssen auch nciht freigeschaltet werden. Ich sehr mir mal die Klammersache an. Mal sehen, was da nicht stimmt.
so, mal sehen was nun passiert. Ich habe mir den Code aus der pgbeintrag.php geholt und deine Ideen damit ausgebaut.
Im Detail sind das die beiden Blöcke:
// Captcha-Code abfragen
if ( $pgb_checkcap == 1) {
if ( ($ccode == \"\" ) or ($ccode != $_SESSION[\'pcaptchacode\']) ) {
msgbox(PGBLmsg_captcha_error);
require(\"fuss.php\");
exit();
}
}
und
:
\" align=\"right\">
So richtig, weiß ich jetzt nicht, was du damit genau verändert hast. Scheint so, als hast du eine Einstellung, wo du setzt, ob du Captcha verwenden möchtest oder nicht.
Nur das Problem mit der Klammer ist folgendes (Vermutung): Das Kommentar wird nur eingetragen, wenn der Sicherheitscode richtig ist! Ansonsten wird nur die Meldung ausgegeben, das er fehlerhaft ist. Bei dir wird aber beides ausgegeben. Das der Captcha-Code falsch ist und das das Kommentar angelegt wurde. Deshalb gehe ich von einer falsch gesetzten Klammer aus.
Grüße
nein, wenn ich deine Klammeranweisung oben so einbaue wie du schreibst, gibts nen Scripterror. Da lässt sich das kommentarscript gar nicht aufrufen. Ich verwende pgb 2.12 aus dem aktuellen csv ! Da hat sich einiges am Code getan. Ich habe mir nun angesehen, was du einbaust und habe die entsprechenchenden stelen im pgbeintrag.php gesucht und gefunden. Der Code ist ja an vielen stellen identisch. So habe ich diese beiden Blöcke gefunden.
Zumindest wird jetzt bei falschem Code keine email mehr erzeugt und offenbar auch nichts eingetragen. Soweit so gut gut, ich teste das weiter und halte ein Auge drauf. Zumindest gibt es kein Scriptfehler. Meinen kompletten code hier zu posten ist ja nicht erwünscht, oder ?
Poste den mal bitte hier, von der Datei. Aber bitte in den [ code ] - Tag setzen, sonst zerlegts die Seite
/uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />
kommentar.php V2.12 aktuelles CSV mit Modifikationen für Captcha
TemplateVar(\"tpl_mail\"));
mail($spalte[\'email\'],PGBL_comment,$tpl_mail,\"From: $gbname \\nContent-Type:text/html\");
}
msgbox(PGBLmsg_comment_saved);
}
//echo \"\";
//echo \"Kommentare zum Eintrag\";
//Eintrag anzeigen
echo \"
$gbname \".PGBL_entry.\"
\".PGBL_autor.\"
\".PGBL_entry.\"
\";
//Var für TPL vorbereiten
$gbt_autor = formatstring($spalte[0]);
if ($spalte[\'vip\'] == 1) {
$gbt_vip = \"-- \".PGBL_vipentry.\" --\";
}
$gbt_time = date(PGBLformat_datetime,$spalte[6]+$time_offset);
if ( $spalte[1] != \"\" and $spalte[\'showemail\'] == 1 ) {
$gbt_mail = \"\";
}
if ($spalte[2]) {
$gbt_homepage = \"\";
}
if (intval($spalte[\'icq\']) > 0) {
$gbt_icq = \"\";
}
if ($spalte[\'icon\'] == \"\") {
$gbt_icon = \"\";
}
else {
$gbt_icon = \"\";
}
$gbt_titel = formatstring($spalte[\'titel\']);
if ($spalte[\'host\']) {
$gbt_host = \"\";
}
$gbt_message = formatpost($spalte[\'message\']);
//TPL parsen und ausgeben
eval($TGBRow->TemplateVar(\"tpl_gbrow\"));
echo $tpl_gbrow;
echo \"\";
//############ Kommentare ######################################################
echo\"
\".PGBL_comments.\":\";
$sqlbefehl= \"Select * FROM $tab_kom where gbid=\'$id\' order by time DESC\";
$ergebnis = mysql_query($sqlbefehl, $serverid);
while ( $kom = mysql_fetch_array ($ergebnis)) {
echo \"\";
//Autor:
echo \"\";
echo formatstring($kom[\'author\']);
echo \"\";
echo date(PGBLformat_datetime,$kom[\'time\']+$time_offset);
echo \"\";
//Kommentar:
echo \"\";
echo formatpost($kom[\'text\']);
echo \"\";
/*Delete:
echo \"\";
echo \"\";
echo \"\";
*/
}
echo \"\";
?>
\">
:
\" size=\"40\" maxlength=\"25\">
:
:
:
:
\" align=\"right\">
\">
$pgb_copyright\";
require(\"fuss.php\");
?>
Schaut gut aus. Kommentare gehen auch, wenn man den richtigen Code eingegeben hat. Baust du noch das Zwischenspeichern des Autorennamens und des Kommentartextes mit ein? So wie ich das oben beschrieben habe. Damit muss man bei einer unwillentlichen Fehleingabe nicht wieder alles neuschreiben.
Zudem würde ich dazu noch aus dem hier
// Captcha-Code abfragen
if ( $pgb_checkcap == 1) {
if ( ($ccode == \"\" ) or ($ccode != $_SESSION[\'pcaptchacode\']) ) {
msgbox(PGBLmsg_captcha_error);
require(\"fuss.php\");
exit();
}
}
$sqlbefehl = \"INSERT INTO $tab_kom VALUES (\'\',\'$zeit\',\'$id\',\'$text\',\'$author\')\";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);
das hier machen
// Captcha-Code abfragen
if ( $ccode != $_SESSION[\'pcaptchacode\'] AND $pgb_checkcap == 1 )
{
msgbox(PGBLmsg_captcha_error);
}
else
{
$sqlbefehl = \"INSERT INTO $tab_kom VALUES (\'\',\'$zeit\',\'$id\',\'$text\',\'$author\')\";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);
}
Das bewirkt, dass sobald der Code ungleich dem generierten ist (das ist er auch, wenn das Feld leer ist
/uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" /> ) und wenn er noch die Variable $pgb_checkcap auf 1 hat, dann soll eine Meldung kommen. Es wird aber weiterhin das Gästebuch komplett angezeigt. Somit umgehst du halt bei einer Fehleingabe das die Leute mühsam zurück müssen, um alles neu einzugeben. (ist ungetestet)
[edit]Habe dir mal ein Testkommentar angelegt. \"Bitte löschen\" mal bitte löschen
/uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-D\" />[/edit]
Grüße
Deine Änderung bewirkt aber das bei falschem oder fehlenden Code wieder die Email erzeugt wird. Bei meiner Modifikation ist das nicht der Fall.
Die andere Änderung mit dem speicher des Autors und des Bodys habe ich absichtlich wieder rausgenommen. Ich vermute hier die Lücke zur Umgehung des Ganzen Systems. Ich mach jetzt erst mal deinen Vorschlag wieder rückgängig.
Das mit der Email habe ich nicht beachtet. Packe einfach diesen Text in den else-Zweig, wo auch das Kommentar angelegt wird. Die Email-Anweisung wird nämlich getrennt behandelt.
Also das
else
{
$sqlbefehl = \"INSERT INTO $tab_kom VALUES (\'\',\'$zeit\',\'$id\',\'$text\',\'$author\')\";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);
}
zu dem
else
{
$sqlbefehl = \"INSERT INTO $tab_kom VALUES (\'\',\'$zeit\',\'$id\',\'$text\',\'$author\')\";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);
//Kommentar via Mail an den Autor
if ($notify == \"1\" and $spalte[\'email\']!=\'\') {
// Format : mail(\"empfaenger\",\"betreff\",\"nachricht\",\"sonstige mailheader\");
$TMail = new Template($pgblangdir.\"/comment.\".$pgb_language.\".mail\");
eval($TMail->TemplateVar(\"tpl_mail\"));
mail($spalte[\'email\'],PGBL_comment,$tpl_mail,\"From: $gbname \\nContent-Type:text/html\");
}
msgbox(PGBLmsg_comment_saved);
}
ich mag dich eigentlich nicht enttäuschen aber das geht auch nicht.. Die Mail kommt noch immer.
Dann muss ich passen. Eigentlich müsste es funktionieren, aber scheint es nicht. Tut mir leid.
ich verwende jetzt erst mal meine Modifikation wie geposted und warte ab, was passiert. Wenn eine Woche lang kein Spam kommt hab ich einen Teilsieg.
Mal eine Rückmeldung von mir: Seit dem ich meine Modifikation drin habe ist kein Spam mehr hinzu gekommen. Scheint also bestens zu funktionieren.
Hallo zusammen, meine Gästebuch (
http://www.gimgim.de/test3/pgb/ ) ist voller Spamkommentare.
Kann mir einer mal bitte mal auf verständliche Weise kurz erklären wie ich diese Problem beseitigen kann ?
Ich bin nicht jemand der was von PHP versteht aber einen Quellcode im Editor werde ich auch noch geändert bekommen.
Voraussetzung einer erklärt es mir vernünftig.
Das Gästebuch ist noch relativ neu und bisher von Einträge unberührt geblieben.
Ich hoffe das es wenn es sich bald geändert hat die Spamkommentare auch der Vergangenheit angehören werden.
Ich schreibe das in der Hoffnung nicht extra ein neues Topic öffnen zu müssen damit meine Eintrag Beachtung findet.
Danke im Voraus.
Hallo zusammen, meine Gästebuch ( http://www.gimgim.de/test3/pgb/ ) ist voller Spamkommentare.[/quote]
Könntest Du mal einen Dump der Spamkommentare machen und irgendwo bereistellen? Ich sammle die Spamkommentare.
Das Problem heute zutage ist weniger das es Bots gibt die immer besser werden.
Umso mehr wird das Problem billiglohnländer mittlerweile gibt es Firmen die Spam von 3€ am Tag Asiaten Indern ect erstellen lassen.
Ich persöhnlich merke in letzter Zeit das ich am Tag ca. 500-1000 E-Mails bekomme die wirklich gut sind.
Man merkt auch das die E-Mailadressen meisst von sogenannten Bots oder Sammelseiten kommen.
Meine Überlegung war es eine Initiative zu gründen um solche Spamschleudern aus zu schalten aber leider fehlt dafür jegliche rechtliche Grundlage.
Wenn wir jetzt hingehen würden und einen Spammer isolieren würden und seinen Server Atakkieren würden dann würden wir vom Deutschen Staat dafür bestraft aber der deutche Staat kann nix gegen den Betreiber eines solchen Servers machen da der sich meisst in Ländern befindet in denen es keine Anti-Spam gesetze durchgesetzt haben.
Aber es ist bemerkenswert was sich im Spam markt so alles tut
/uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />
Original von Statler Hallo zusammen, meine Gästebuch ( http://www.gimgim.de/test3/pgb/ ) ist voller Spamkommentare.[/quote]
Könntest Du mal einen Dump der Spamkommentare machen und irgendwo bereistellen? Ich sammle die Spamkommentare.
[/quote]
Wenn du mir erklärst was ein dump ist ?
Original von otti_mania Das Problem heute zutage ist weniger das es Bots gibt die immer besser werden.
Umso mehr wird das Problem billiglohnländer mittlerweile gibt es Firmen die Spam von 3€ am Tag Asiaten Indern ect erstellen lassen.
Ich persöhnlich merke in letzter Zeit das ich am Tag ca. 500-1000 E-Mails bekomme die wirklich gut sind.
Man merkt auch das die E-Mailadressen meisst von sogenannten Bots oder Sammelseiten kommen.
Meine Überlegung war es eine Initiative zu gründen um solche Spamschleudern aus zu schalten aber leider fehlt dafür jegliche rechtliche Grundlage.
Wenn wir jetzt hingehen würden und einen Spammer isolieren würden und seinen Server Atakkieren würden dann würden wir vom Deutschen Staat dafür bestraft aber der deutche Staat kann nix gegen den Betreiber eines solchen Servers machen da der sich meisst in Ländern befindet in denen es keine Anti-Spam gesetze durchgesetzt haben.
Aber es ist bemerkenswert was sich im Spam markt so alles tut /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />
[/quote]
ich kann deine begeisterung leider nicht teilen.
Original von rdm Kann mir einer mal bitte mal auf verständliche Weise kurz erklären wie ich diese Problem beseitigen kann ?
[/quote]
Das ist relativ einfach. Installiere erst mal die letzte Version aus dem CSV:
http://www.powie.de/cvsout/pgb.tar.gz
Dann nimmst du meine kommentar.php aus dem Thread:
http://www.powie.de/cms/forum/showthread.php?id=22468&eintrag=38
Das wars, spam erledigt *eg* Zumindest bei mir.
Wenn du mir erklärst was ein dump ist ?[/quote]
Eine Sicherung der Datenbank. Allerdings interessieren mich nur die Spamkommentare.
Original von rdm
ich kann deine begeisterung leider nicht teilen.
[/quote]
#####Anmerkung#####
Ich bin nicht begeistert vom Spam nur von den Entwicklungen der Spam-Szene.
Und das nicht im positiven Sinne.
Ich bin nicht begeistert vom Spam nur von den Entwicklungen der Spam-Szene.[/quote]
Der Vorteil dieser Entwicklung ist schlicht und ergreifend eine Wettbewerbssituation zwischen Spammern auf der einen und Entwickler/User auf der anderen Seite. Sorgt schlicht für Evolution.
Braucht man ne Freischaltung um die CVSout\'s zu sehen? Ich find\' da nämlich neider nüscht :/
Hallo,
ich habe die kommentar.php V2.12 CSV mit Modifikationen für Captcha in meinem PGB 2.12 eingebunden, das Captcha funktioniert bei den normalen Einträgen. Aber wenn ich jetzt den Sicherheitscode in den Kommentaren eingebe, erhalte ich folgende Fehlermeldung:
\"Der Sicherheitscode konnte nicht überprüft werden\"
??? Hab ich was übersehen ???
Hast du Modfikationen gemacht oder nur die Datei an sich eingebunden?
Original von k00ni Hast du Modfikationen gemacht oder nur die Datei an sich eingebunden?
[/quote]
Ich habe die Datei an sich nur eingebunden, so wie sie hier gepostet wurde, was soll daran noch modifiziert werden?
Hallo k00ni,
ich habe deine Anleitung von Seite 2 hier benutzt um auch für Kommentare die Captcha-Abfrage einzubauen...
Es funktioniert aber leider nicht richtig.
Wenn ich den richtigen Code eingebe kommt leider :
\"Column count doesn\'t match value count at row 1\"
Trotzdem poste ich mal die kommentar.php:
TemplateVar(\"tpl_mail\"));
mail($spalte[email],PGBL_comment,$tpl_mail,\"From: $gbname \\nContent-Type:text/html\");
}
msgbox(PGBLmsg_comment_saved);
}
}
//echo \"\";
//echo \"Kommentare zum Eintrag\";
//Eintrag anzeigen
echo \"
$gbname \".PGBL_entry.\"
\".PGBL_autor.\"
\".PGBL_entry.\"
\";
//Var für TPL vorbereiten
$gbt_autor = formatstring($spalte[0]);
if ($spalte[vip] == 1) {
$gbt_vip = \"-- \".PGBL_vipentry.\" --\";
}
$gbt_time = date(PGBLformat_datetime,$spalte[6]+$time_offset);
if ( $spalte[1] != \"\" and $spalte[\'showemail\'] == 1 ) {
$gbt_mail = \"\";
}
if ($spalte[2]) {
$gbt_homepage = \"\";
}
if (intval($spalte[icq]) > 0) {
$gbt_icq = \"\";
}
if ($spalte[icon] == \"\") {
$gbt_icon = \"\";
}
else {
$gbt_icon = \"\";
}
$gbt_titel = formatstring($spalte[titel]);
if ($spalte[host]) {
$gbt_host = \"\";
}
$gbt_message = formatpost($spalte[message]);
//TPL parsen und ausgeben
eval($TGBRow->TemplateVar(\"tpl_gbrow\"));
echo $tpl_gbrow;
echo \"\";
//############ Kommentare ######################################################
echo\"
\".PGBL_comments.\":\";
$sqlbefehl= \"Select * FROM $tab_kom where gbid=\'$id\' order by time DESC\";
$ergebnis = mysql_query($sqlbefehl, $serverid);
while ( $kom = mysql_fetch_array ($ergebnis)) {
echo \"\";
//Autor:
echo \"\";
echo formatstring($kom[author]);
echo \"\";
echo date(PGBLformat_datetime,$kom[time]+$time_offset);
echo \"\";
//Kommentar:
echo \"\";
echo formatpost($kom[text]);
echo \"\";
/*Delete:
echo \"\";
echo \"\";
echo \"\";
*/
}
echo \"\";
?>
\">
:
\" size=\"40\" maxlength=\"25\">
:
:
:
Sicherheitsabfrage:
(Bitte hier den untenstehenden Sicherheitscode eingeben)
\">
$pgb_copyright\";
require(\"fuss.php\");
?>
oder muss ich was in der SQL-Datenbank ändern?
Tabelle: pgb_kom
Ich frage mich gerade, wo die Meldung herkommt mit dem count drin. Es gibt keine entsprechende Spalte in den Tabellen und auch im Quellcode habe ich nichts entsprechendes gefunden bei dir.
Einfach und stupide: Schreibe mal hinter jedem Aufruf von mysql_query, ein echo mysql_error.
Also so:
$ergebnis = mysql_query($sqlbefehl, $serverid);
dann dahinter ein:
echo mysql_error ();
Villeicht spuckt er noch mehr Fehlermeldungen.
Grüße
leider nein...bleib bei der einen Meldung:
Column count doesn\'t match value count at row 1
Dann mach mal vor jedem mysql_error eine Zahl, und dann sage mir bei welchem es auftritt.
Also:
echo \"1\". mysql_error ();
(2, 3, 4.... usw)
hmm...gibt ja an sich nur 3 echos die ich setzen kann...ergebnis ist komisch.
http://www.sv-mittelbuchen.de/svmgb/kommentar.php?id=620
hab mal was geändert und wenigstens kommt keine Fehlermeldung mehr , aber ergebnis sieht auch noch net 100&ig aus
aus:
$sqlbefehl = \"INSERT INTO $tab_kom VALUES (\'\',\'$zeit\',\'$id\',\'$text\',\'$author\')\";
wurde:
$sqlbefehl = \"INSERT INTO $tab_kom VALUES (\'\',\'$zeit\',\'$id\',\'$text\',\'$author\',\'$host\')\";
Nicht komisch. Der schmeißt den Fehler nach der 2. mysql_query-Funktion. Also liegts an dem Insert. Hab grad keine Ahnung. Vielleicht mal die Änderungen vom zarzal anschauen.
Geht denn mit der Originaldatei? Wenn ja, dann einfach nochmal schrittweise meine / zarzal\'s Änderungen einbauen und dann bei entsprechender Meldung hier posten nach was es kam.
Ok, dann nimm meine echo mysql_error wieder raus. Es lag an der zusätzlichen Spalte. Warum er aber mit count kam, keine Ahnung. :ugly:
Das Eintragen geht. Soweit nun alles roger?
denke schon...jetzt ist die spaltenbreite noch bisschen verschoben...text ist ganz rechts, aber bekomm ich schon irgendwie hin.
Danke dir auf jeden Fall für deine Zeit und Hilfe!!!!
Eine Frage hab ich doch noch...sobald ich F5 drücke postet er den Kommentar nochmal rein. Kann man da was gehen machen?
Du kannst Beiträge ändern, musst nicht neu erstellen.
/uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
Bei dem F5 könntest du nach dem:
msgbox(PGBLmsg_comment_saved);
ein
header (\'Location: kommentar.php?id=\'. $id );
schreiben. Da wird nach dem abgegebenen Kommentar sofort auf die gleiche Datei \"umgeleitet\". Damit umgehst du Doppelposts durch F5 drücken.
Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/web257/html/svmgb/kopf.php:4) in /srv/www/htdocs/web257/html/svmgb/kommentar.php on line 95
was ist jetzt hier wieder falsch?
Du leitest den Client weiter, obwohl Du schon Ausgaben an ihn geschickt hast. Das funktioniert nicht. Du darfst vor dem Aufruf von header() keine weiteren Ausgaben schicken - auch keine Leerzeichen oder Steuerzeichen.
Jo, das Problem ist, dass man das ganze Skript anpassen müsste, damit die Umleitung ginge. Eine andere Möglichkeit um F5 zu verhindern fiele mir grad nicht ein.
Wird dort POST oder GET eingesetzt? Wenn GET, sollte man unbedingt auf POST umstellen - POST-Request sollen nicht cached werden; gute Browser fragen, ob sie erneut schicken sollen.