PHPBB анти спам MOD

Автор: Truden

Този MOD е основан на cookies.
Създаден е като анти спам plugin за WordPress и работи 100% с него.
В PHPBB2 работи.

Наречен е TruBar 4.0(Silent) като продължител на TruBar, който ползва security image и е в употреба в www.truden.com, където всеки анонимен може да създава тема във форумите и да дава мнение в тях.

Моля да бъда извинен за Английския език ползван в обяснението.

COD:

##############################################################
## MOD Title: TruBar
##
## MOD Author: Truden < sisoeff(at)gmail-dot-com > (Nikolay Sisoev-Truden) http://www.truden.com
##
## MOD Description: All users are checked whether they are humans or robots.
## The checking is silent and do not interfear with the theme interface.
## The check is done with "onmousedown" event. Cookies(through java script) are sent when user clicks in the text area to type.
## Robots do not click and do not read js.
##
## MOD Version: 4.0(Silent)
##
## Installation Level: (Easy)
## Installation Time: 5 Minutes
## Files To Edit:
## posting.php
## language/lang_english/lang_main.php
## templates/ subSilver/posting_body.tpl
##
## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
##############################################################
## Not released yet for PHPBB2
##
##############################################################
## Author Notes:
## I Love You All.
##
##############################################################
## MOD History: Blah-blah...
##
## 2007-05-28 - Version 4.0(Silent)
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################


#
#-----[ OPEN ]------------------------------------------
#
posting.php

#
#-----[ FIND ]------------------------------------------
#
else if ( $submit || $confirm)
{
#
#-----[ AFTER, ADD ]------------------------------------------
#
if (isset($_COOKIE['TrBr']))
{
#
#-----[ FIND ]------------------------------------------
#
submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
#
#-----[ AFTER, ADD ]------------------------------------------
#
// START TruBar
setcookie('TrBr', check, time()-30000000);
// END TruBar
#
#-----[ FIND ]------------------------------------------
#
message_die(GENERAL_MESSAGE, $return_message);
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
}else{
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['TruBar_error_post'];
}
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/ lang_main.php
#
#-----[ FIND ]------------------------------------------
#
//
// That's all, Folks!
// -------------------------------------------------
#
#-----[ BEFORE, ADD ]------------------------------------------
#
//
//TruBar
//
$lang['TruBar_error_post'] = "<font color=\"red\"><b>You did not click in the text area. Tab key selection does not take your comment.<br />Another reason to be here is that you do not have java script and cookies enabled in your browser.</b></font>";
#
#-----[ DIY INSTRUCTIONS ]------------------------------------------
#
Do the above change for all your language files
#
#-----[ OPEN ]------------------------------------------
#
templates/ subSilver/ posting_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<script language="JavaScript" type="text/javascript">
<!--
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Start TruBar
function trubar8() {
document.cookie = 'TrBr=check; expires=Thu, 2 Aug 2029 20:08:08 UTC; path=/'
}
// End TruBar
#
#-----[ FIND ]------------------------------------------
#
<textarea name="message" rows="15" cols="35" wrap="virtual" style="width:450px" tabindex="3" class="post" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);">{MESSAGE}</textarea>
#
#-----[ REPLACE WITH ]------------------------------------------
#
<textarea onmousedown="return trubar8()" name="message" rows="15" cols="35" wrap="virtual" style="width:450px" tabindex="3" class="post" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);">{MESSAGE}</textarea>
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#

# EoM

За допълнителна сигурност, че робот няма да дойде във форумите ви с вашите кукита, се създава файл cleaner.php и се поставя в главната папка (forum root) на PHPBB2 .

cleaner.php

<?php
setcookie('TrBr', check, time()-30000000);
echo "<div style=\"display: left; color: red; background-color:#05F9B5; border: solid 2px; width: 750px; margin: 18px; padding: 18px\" id=\"cookieclean\">Току що вашите кукита за коментар бяха изтрити. <input type =\"button\" name =\"back\" value=\"Върнете се\" onclick=\"history.go(-1)\"> и се наслаждавайте на нашите форуми.</div>";
?>

ОТВОРЕТЕ файловете:

index.php
viewforum.php
viewtopic.php

Във всички тях намерете:
Редактирано на 01.06.2007

//
// Start session management
//
$userdata = session_pagestart($user_ip, $forum_id);
init_userprefs($userdata);
//
// End session management
//

ВМЪКНЕТЕ ОТДОЛУ:

//Start TruBar
if ( !$userdata['session_logged_in'] && isset($_COOKIE['TrBr']) )
{
$cleaner = "../cleaner.php";
header ("Location: $cleaner");
exit;
}
//END TruBar

Край на редакцията от 01.06.2007

Готово.

При така изпълнения MOD, всеки посетител (и регистрираните) при щракане с мишката в полето за писане ще получи кукита изпратени от JS функцията trubar8()

При POST се прави проверка дали кукитата съществуват.
Ако не са записани се получава ГРЕШКА, уведомяваща, че потребителя не е щракнал в полето за писане (избрал го е с TAB клавиша) или че е изключил javascript и cookies на своя браузър.

Тази техника може да се ползва във всякакви web апликации.
Много по-удобна за изпълнение е, когато POST се прави към друг файл а не към “себе си”, както е в PHPBB2

Защо работи срещу роботизиран спам?

Защото роботите не изпълняват onmousedown (нямат мишка) и защото не четат java script.

Отворете си форумите за анонимни и се наслаждавайте на форуми без спам 😉

Труден

Leave a Reply