kann man Spam bei den Kommentaren unterbinden ?

Begonnen von hobbyknipser, 16. April 2007, 10:16:28

Vorheriges Thema - Nächstes Thema

gulli

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

marc breuer


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]

k00ni

Poste mal bitte den Inhalt der Datei von Zeile 0 bis Zeile 31.

marc breuer

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

k00ni

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

marc breuer

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

k00ni


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

marc breuer

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.

k00ni

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\");

marc breuer

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

k00ni

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

mahe

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();
   }
}

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


zarzal

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?

k00ni

Hallo,
ich hatte dazu mal eine Anleitung geschrieben. http://www.powie.de/cms/forum/showthread.php?id=22619\" rel=\"external nofollow\">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]

k00ni

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 abfragen
Um 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 erhalten
Damit 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.
 
Kommentartext
kommentar.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

all your base are belong to us / Discord