Jump to content

Archived

This topic is now archived and is closed to further replies.

mcfly

txt Guestbook. How to block spam.

Recommended Posts

Hi, see below..
This is a php file that writes guestbook info to a txt file. I have a problem with spam in my guestbook, and I wonder if anyone knows about a "tag" that can block web addresses entered in the "comment field"
F.ex. If you enter "http://www" in the comment field, you will get blocked...

Just take a look at this site, and you'll know what i mean;
http://slap-madcap.com/guestbook.php

Thanks
--- Erik

<?php

while(list($key, $val) = each($HTTP_POST_VARS))

{ $val = str_replace("<", "&lt;", $val);

$HTTP_POST_VARS[$key] = str_replace(">", "&gt;", $val);

}

$date = date("d. m. Y H:i:s");

$logit = "<font style=\"font-family: arial; font-size: 8pt;\"><p><b>Name:</b> ".$HTTP_POST_VARS["name"]."<br>".
"<b>Time:</b> $date<br>".

"<b>Comment: </b>".$HTTP_POST_VARS["comment"]." <br><hr> \n";






$logit = stripslashes($logit);
$fp = fopen ("innlegg.txt", "r+") or die("Error, somthing is wrong.");
$Old = fRead ($fp, filesize("innlegg.txt"));
fclose ($fp);
$fp = fopen ("innlegg.txt", "w") or die("Error, somthing is wrong.");
fwrite ($fp, $logit);
fwrite ($fp, $Old);
fclose ($fp);
header("Location: guestbook.php");

?>
[b]edit(shoz): Edited for language[/b]

Share this post


Link to post
Share on other sites
you could set up a database with unallowed addresses then see if the comment relates to those.. ...... also theres a code to turn to lower case so someone can fool it like that...

Share this post


Link to post
Share on other sites
This works for me:

[code]// function to check for all our favorite penis extenders and other spam trash
function flag_spam($text) {
$total_matches = 0;
$trash = array();

// Count the regular links
$regex = "/<\\s*a\\s+href\\s*=\\s*/i";
$total_matches += preg_match_all($regex, $text, $trash);
   
// Count the PHPBB links
$regex = "/[\\s*/\\s*url\\s*]/i";
$total_matches += 5 * preg_match_all($regex, $text, $trash);

// Check for common spam words
$words = array('phentermine', 'viagra', 'cialis', 'vioxx', 'oxycontin', 'levitra', 'ambien', 'xanax', 'paxil', 'casino', 'slot-machine','texas-holdem','ringtones');
   
foreach ($words as $word) {
  $word_matches = preg_match_all('/' . $word . '/i', $text, $trash);
  $total_matches += 5 * $word_matches;
}
   
if ($total_matches > 4) {
  return TRUE;
}
return FALSE;


// abstract data sent from form
.....
$comments = trim($_POST['comments']);

if (flag_spam($comments)) {
    die("SPAM = LOSER"); // gotcha!
}
// comments not null so continue processing form by removing tags, slashes, etc.
$comments = strip_tags($comments);[/code]

Share this post


Link to post
Share on other sites
OK, thanks, folks! But I can't get it to work.. Excactly where shall I write it?
Could anyone just edit the code for me and post it here?

(I'm not a web-dude at all, I was just left alone trying to fix my own page)

Thanks!
Erik


[code]<?php

while(list($key, $val) = each($HTTP_POST_VARS))

{ $val = str_replace("<", "&lt;", $val);

$HTTP_POST_VARS[$key] = str_replace(">", "&gt;", $val);

}

$date = date("d. m. Y H:i:s");

$logit = "<font style=\"font-family: arial; font-size: 8pt;\"><p><b>Name:</b> ".$HTTP_POST_VARS["navn"]."<br>".
"<b>Time:</b> $date<br>".

"<b>Comment: </b>".$HTTP_POST_VARS["kommentar"]." <br><hr> \n";



$logit = stripslashes($logit);
$fp = fopen ("innlegg.txt", "r+") or die("Error, something is wrong.");
$Old = fRead ($fp, filesize("innlegg.txt"));
fclose ($fp);
$fp = fopen ("innlegg.txt", "w") or die("Error, something is wrong.");
fwrite ($fp, $logit);
fwrite ($fp, $Old);
fclose ($fp);
header("Location: crapbook.php");

?>[/code]

Share this post


Link to post
Share on other sites
[quote author=mcfly link=topic=102783.msg410249#msg410249 date=1154793071]
OK, thanks, folks! But I can't get it to work.. Excactly where shall I write it?
Could anyone just edit the code for me and post it here?

(I'm not a web-dude at all, I was just left alone trying to fix my own page)

Thanks!
Erik


[code]<?php

while(list($key, $val) = each($HTTP_POST_VARS))

{ $val = str_replace("<", "&lt;", $val);

$HTTP_POST_VARS[$key] = str_replace(">", "&gt;", $val);

}

$date = date("d. m. Y H:i:s");

$logit = "<font style=\"font-family: arial; font-size: 8pt;\"><p><b>Name:</b> ".$HTTP_POST_VARS["navn"]."<br>".
"<b>Time:</b> $date<br>".

"<b>Comment: </b>".$HTTP_POST_VARS["kommentar"]." <br><hr> \n";



$logit = stripslashes($logit);
$fp = fopen ("innlegg.txt", "r+") or die("Error, something is wrong.");
$Old = fRead ($fp, filesize("innlegg.txt"));
fclose ($fp);
$fp = fopen ("innlegg.txt", "w") or die("Error, something is wrong.");
fwrite ($fp, $logit);
fwrite ($fp, $Old);
fclose ($fp);
header("Location: crapbook.php");

?>[/code]
[/quote]




add the code AndyB said... like this


[code]<?php

// function to check for all our favorite penis extenders and other spam trash
function flag_spam($text) {
$total_matches = 0;
$trash = array();

// Count the regular links
$regex = "/<\\s*a\\s+href\\s*=\\s*/i";
$total_matches += preg_match_all($regex, $text, $trash);
   
// Count the PHPBB links
$regex = "/[\\s*/\\s*url\\s*]/i";
$total_matches += 5 * preg_match_all($regex, $text, $trash);

// Check for common spam words
$words = array('phentermine', 'viagra', 'cialis', 'vioxx', 'oxycontin', 'levitra', 'ambien', 'xanax', 'paxil', 'casino', 'slot-machine','texas-holdem','ringtones');
   
foreach ($words as $word) {
  $word_matches = preg_match_all('/' . $word . '/i', $text, $trash);
  $total_matches += 5 * $word_matches;
}
   
if ($total_matches > 4) {
  return TRUE;
}
return FALSE;


//$_POST['comments'], change this to what ever your field name is for the message in the guest book.
$comments = trim($_POST['comments']);

if (flag_spam($comments)) {
    die("SPAM = LOSER"); // gotcha!
}
// comments not null so continue processing

while(list($key, $val) = each($HTTP_POST_VARS))

{ $val = str_replace("<", "&lt;", $val);

$HTTP_POST_VARS[$key] = str_replace(">", "&gt;", $val);

}

$date = date("d. m. Y H:i:s");

$logit = "<font style=\"font-family: arial; font-size: 8pt;\"><p><b>Name:</b> ".$HTTP_POST_VARS["navn"]."<br>".
"<b>Time:</b> $date<br>".

"<b>Comment: </b>".$HTTP_POST_VARS["kommentar"]." <br><hr> \n";



$logit = stripslashes($logit);
$fp = fopen ("innlegg.txt", "r+") or die("Error, something is wrong.");
$Old = fRead ($fp, filesize("innlegg.txt"));
fclose ($fp);
$fp = fopen ("innlegg.txt", "w") or die("Error, something is wrong.");
fwrite ($fp, $logit);
fwrite ($fp, $Old);
fclose ($fp);
header("Location: crapbook.php");

?>[/code]

just see the php note i added... i hope that works

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.