Filip Lynx
Adamczyk
Programista
PHP/Javascript
Temat: pozbycie się spam-botów phpBB
Zakładam, że chodzi o phpBB2. Ja swego czasu miałem ten sam problem i rozwiązałem go następująco:Zmodyfikowałem potwierdzenie graficzne tak, że zamiast odczytywać treść obrazka należało podać wynik prostej operacji na 2 cyfrach(dodawanie lub mnożenie). Proste i rozwiązało problem. A teraz kod:
Plik ./includes/usercp_register.php:
Znajdź(~297 linii):
$sql = 'SELECT code
FROM ' . CONFIRM_TABLE . "
WHERE confirm_id = '$confirm_id'
AND session_id = '" . $userdata['session_id'] . "'";
Zastąp przez:
$sql = 'SELECT code, equal
FROM ' . CONFIRM_TABLE . "
WHERE confirm_id = '$confirm_id'
AND session_id = '" . $userdata['session_id'] . "'";
---
Znajdź(~1002 linii):
$code = dss_rand();
$code = substr(str_replace('0', 'Z', strtoupper(base_convert($code, 16, 35))), 2, 6);
$confirm_id = md5(uniqid($user_ip));
$sql = 'INSERT INTO ' . CONFIRM_TABLE . " (confirm_id, session_id, code)
VALUES ('$confirm_id', '". $userdata['session_id'] . "', '$code')";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not insert new confirm code information', '', __LINE__, __FILE__, $sql);
}
Zastąp przez:
$chars = array('1','2','3','4','5','6','7','8','9');
$count = count($chars) - 1;
$number_1 = $chars[rand(0, $count)];
$number_2 = $chars[rand(0, $count)];
$choose = rand(0,1);
switch($choose){
case 0:{
$code = $number_1.'+'.$number_2.'=';
$equal = $number_1 + $number_2;
break;
}
case 1:{
$code = $number_1.'*'.$number_2.'=';
$equal = $number_1 * $number_2;
break;
}
}
$confirm_id = md5(uniqid($user_ip));
$sql = "INSERT INTO " . CONFIRM_TABLE . " (confirm_id, session_id, code, equal)
VALUES ('$confirm_id', '". $userdata['session_id'] . "', '$code', '$equal')";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not insert new confirm code information', '', __LINE__, __FILE__, $sql);
}
unset($equal);
Zapisz zmiany i zamknij plik
Plik ./includes/usercp_confirm.php:
Znajdź(~73 linii):
$total_width = 320;
$total_height = 50;
$img_height = 40;
Zastąp przez:
$total_width = 160;
$total_height = 50;
$img_height = 90;
---
Znajdź(~405 linii):
'Z' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////wD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////AP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAQ//////////////8A/////////////////////////1AAAAAAAAAABLz//////////////wD///////////////////////98AAAAAAAAAACY////////////////AP//////////////////////pAAAAAAAAAAAaP////////////////8A/////////////////////8QIAAAAAAAAAET8/////////////////wD////////////////////gGAAAAAAAAAAo9P//////////////////AP//////////////////9CwAAAAAAAAAFNz///////////////////8A//////////////////xMAAAAAAAAAATA/////////////////////wD/////////////////eAAAAAAAAAAAnP//////////////////////AP///////////////5wAAAAAAAAAAHT///////////////////////8A///////////////ABAAAAAAAAABM/P///////////////////////wD/////////////3BQAAAAAAAAALPT/////////////////////////AP////////////QoAAAAAAAAABjg//////////////////////////8A///////////8SAAAAAAAAAAExP///////////////////////////wD//////////2wAAAAAAAAAAKD/////////////////////////////AP////////+YAAAAAAAAAAB8//////////////////////////////8A/////////wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A/////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////wD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
Dodaj za tym dodaj:
'+' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD///////////////////////AAAAAAAAA/////////////////////AP///////////////////////AAAAAAAAA////////////////////8A///////////////////////AAAAAAAAA/////////////////////wD///////////////////////AAAAAAAAA/////////////////////AP///////////////////////AAAAAAAAA////////////////////8A///////////////////////AAAAAAAAA/////////////////////wD//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA///////////8A//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////wD//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA///////////8A//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////wD//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA///////////8A//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////wD///////////////////////AAAAAAAAA/////////////////////AP///////////////////////AAAAAAAAA////////////////////8A///////////////////////AAAAAAAAA/////////////////////wD/////////////////////////AAAAAAAAAP//////////////////AP////////////////////////8AAAAAAAAA//////////////////8A/////////////////////////wAAAAAAAAD//////////////////wD///////////////////////AAAAAAAAA/////////////////////AP///////////////////////AAAAAAAAA////////////////////8A///////////////////////AAAAAAAAA/////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'=' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA///////////8A//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////wD//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA///////////8A//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA///////////8A//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////wD//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AP//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA///////////8A//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAA////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
'*' => array(
'data' => 'AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD////////////////////////AAAAAAAA/////////////////////AP////////////////////////AAAAAAA/////////////////////8A////////////////////////AAAAAAAA/////////////////////wD////////////////////////AAAAAAAA/////////////////////AP////////////////////////AAAAAAA/////////////////////8A////////////////////////AAAAAAAA/////////////////////wD////////////////////////AAAAAAAA/////////////////////AP////////////////////////AAAAAAA/////////////////////8A////////////////////////AAAAAAAA/////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8A/////////////////////////////////////////////////////wD/////////////////////////////////////////////////////AP////////////////////////////////////////////////////8=',
'width' => 40
),
Zapisz zmiany i zamknij plik.
Plik: ./language/lang_polish/lang_main.php
Znajdź(~671 linii):
$lang['Confirm_code'] = 'Kod potwierdzający';
$lang['Confirm_code_explain'] = 'Wprowadź kod dokładnie tak jak powyżej. Uwaga: Cyfrę zero rozpoznajemy po przekreśleniu.';
I zastąp przez:
$lang['Confirm_code'] = 'Potwierdzenie';
$lang['Confirm_code_explain'] = 'Wprowadź wynik działania:';
Zapisz zmiany i zamknij plik.
Baza danych musisz zmienić tabelę, gdzie przechowywany jest kod. W tym celu wykonaj zapytanie do sql:
ALTER TABLE `phpbb_confirm` ADD `equal` TINYINT( 1 ) NOT NULL AFTER `code` ;
Teraz powinieneś już móc się cieszyć nowym potwierdzeniem graficznym. W razie jakichś problemów napisz, to Ci pomogę.
Pozdrawiam.Filip Adamczyk edytował(a) ten post dnia 24.09.07 o godzinie 14:51