4images Forum & Community
4images Modifications / Modifikationen => Mods & Plugins (Releases & Support) => Topic started by: Lucifix on October 26, 2009, 12:37:18 PM
-
I found interesting website that contains database from different forum spam bots: http://www.stopforumspam.com/
I've integrated their API in 4images gallery to prevent bots to register (even thought I'm using capcha system, bots somehow managed to register).
This mod is taken from their forum so all the credit goes to author:
http://www.stopforumspam.com/forum/t598-Basic-file-read
1. Open includes/functions.php and before:
?>
add
function checkspammers($input,$inputtype='email'){
//Load the file, and implode the array.
$xml = implode('',file("http://www.stopforumspam.com/api?".$inputtype."=".$input));
//Start new xml parser.
$p = xml_parser_create();
//Get the xml into an array
xml_parse_into_struct($p, $xml, $vals, $index);
//Free some memory by clearing the xml parser
xml_parser_free($p);
//We don't need $index or the $xml any more
unset($index,$xml);
//Prepare the return array
$return = array();
//Now we are going to make the aray useable
foreach($vals as $array){
//If it's the opening array we can do it slightly differnetly
if($array['type'] == 'open'){
//Just get weather it was sucess or not.
$return[$array['tag']] = $array['attributes']['SUCCESS'];
}elseif($array['type'] == 'complete'){
//Else just get the value
$return[$array['tag']] = $array['value'];
}
}
//Save a bit mroe memory by clearing the vals array
unset($vals);
//Now make time into a unix timestamp
if($return['LASTSEEN']){
//Sepparate the timestamp into the time and the date
$time = explode(' ',$return['LASTSEEN']);
//Sepparate the date
$date = explode("-",$time[0]);
//Sepparate the time
$time = explode("-",$time[0]);
//Now make the time, note we times by 1 to remove leading zeros, if we don't then php cansometimes use teh octal system instead of decimal.
$return['UNIXLASTSEEN'] = gmmktime($time[0]*1,$time[1]*1,$time[2]*1,$date[1]*1,$date[2]*1,$date[0]*1);
}
//RESPONCE would be better as booleen, not a string
if($return['RESPONCE'] == 'true'){ $return['RESPONCE'] = true; }else{ $return['RESPONCE'] = false; }
//Now return our array.
return $return;
}
//Example function to check in ip
function isaspammer($ip){
//Get the xml results as an array from teh function above
$result = checkspammers($ip);
//Is he reported?
if($result['FREQUENCY'] > 0 && (time() - $result['UNIXLASTSEEN']) < (3600 * 24 * 365)){
//He is a spammer
return true;
}else{
//He is not reported as a spammer
return false;
}
}
2. Open register.php
before:
if ($user_password == "") {
add
if (isaspammer($user_email)) {
$msg .= (($msg != "") ? "<br />" : "").$lang['invalid_email_format']; // or add anything else, bots doesn't understand nothing :)
$error = 1;
}
Simple as that :wink:
PS: it's also possible to check their IP, but email check is working for me (now)
-
hmm....are you sure it's working? you are submitting email, instead of IP...
-
It's working, check this again:
function checkspammers($input,$inputtype='email'){
//Load the file, and implode the array.
$xml = implode('',file("http://www.stopforumspam.com/api?".$inputtype."=".$input));
inputtype is email, so api will check email insted of IP.
-
Yes, you are right.
My bad, sorry :oops:
to check by email and IP:
if (isaspammer($user_email) || isaspammer($site_sess->user_ip, "ip")) {
-
I've tested this one. It works like a charme :-) This secures the Website a little bit more :-)
Thanks for Posting...
Gruß
ingo
-
I must say that even I am little surprised how effective is this modification, couse since I've install it none of bad bots have registered in my gallery :mrgreen:
-
Hi!
This modification will only work if the server config [function.file] enabled.
at Freehost provider this is not the case.
otherwise an error occurs: " Warning: file() [function.file]: URL file-access is disabled in the server configuration."
mfg Andi
-
Worls perfect for me:
1. Öffne / Open includes/functions.php
Suche / Search
?>
Davor einfügen: Add abbove
function checkspammers($input,$inputtype='email'){
//Load the file, and implode the array.
$xml = implode('',file("http://www.stopforumspam.com/api?".$inputtype."=".$input));
//Start new xml parser.
$p = xml_parser_create();
//Get the xml into an array
xml_parse_into_struct($p, $xml, $vals, $index);
//Free some memory by clearing the xml parser
xml_parser_free($p);
//We don't need $index or the $xml any more
unset($index,$xml);
//Prepare the return array
$return = array();
//Now we are going to make the aray useable
foreach($vals as $array){
//If it's the opening array we can do it slightly differnetly
if($array['type'] == 'open'){
//Just get weather it was sucess or not.
$return[$array['tag']] = $array['attributes']['SUCCESS'];
}elseif($array['type'] == 'complete'){
//Else just get the value
$return[$array['tag']] = $array['value'];
}
}
//Save a bit mroe memory by clearing the vals array
unset($vals);
//Now make time into a unix timestamp
if($return['LASTSEEN']){
//Sepparate the timestamp into the time and the date
$time = explode(' ',$return['LASTSEEN']);
//Sepparate the date
$date = explode("-",$time[0]);
//Sepparate the time
$time = explode("-",$time[0]);
//Now make the time, note we times by 1 to remove leading zeros, if we don't then php cansometimes use teh octal system instead of decimal.
$return['UNIXLASTSEEN'] = gmmktime($time[0]*1,$time[1]*1,$time[2]*1,$date[1]*1,$date[2]*1,$date[0]*1);
}
//RESPONCE would be better as booleen, not a string
if($return['RESPONCE'] == 'true'){ $return['RESPONCE'] = true; }else{ $return['RESPONCE'] = false; }
//Now return our array.
return $return;
}
//Example function to check in ip
function isaspammer($ip){
//Get the xml results as an array from teh function above
$result = checkspammers($ip);
//Is he reported?
if($result['FREQUENCY'] > 0 && (time() - $result['UNIXLASTSEEN']) < (3600 * 24 * 365)){
//He is a spammer
return true;
}else{
//He is not reported as a spammer
return false;
}
}
2. Öffne / Open register.php
Suche / Search:
if ($user_password == "") {
Davor einfügen / Add above
if (isaspammer($user_email) || isaspammer($site_sess->user_ip, "ip")) {
$msg .= (($msg != "") ? "<br />" : "").$lang['invalid_email_format']; // or add anything else, bots doesn't understand nothing :)
$error = 1;
}
-
http://www.nuwaragedara.com/Gallery/details.php?image_id=54&sessionid=42abd0066529b2ddb6de6b118c9f4f2e#
Hey have a luk at this//..
can i stop this by installing this mode ?
tnx in advance !
-
I doubt this mod will help you, as your comments don't require users submit valid email addresses...
On other thought, you can use this mod to check IP addresses...you should give it a try.
-
this works perfect... :D u know what .. a friend of me asked from me "HEY BRP..ITS IMPOSSIBLE TO PASS A BOT TO UR 4IMAGE...HOW DID U DO IT" ?
im sry to say..he was the spammer in ma site :mrgreen:
tnx to this mode..im saved now !
-
Is this STILL working for everybody?
For some reason it's just not working for me. I'm testing by registering with a fictional "spam type" address. spammer@adlkjasdlkfjasdflkjasdf.com (or whatever).
Those registrations go through.
PHP version 5.2.8
4images 1.7.8 <--- just upgraded
Are there any alternatives to this that do the same thing?
Terry
-
I'm testing by registering with a fictional "spam type" address. spammer@adlkjasdlkfjasdflkjasdf.com (or whatever).
Those registrations go through.
this test-email address is not in the database from stopforumspam.
here can you test (http://www.stopforumspam.com/search) the email address.
mfg Andi