نصب دستی Anti-Bot Registration Puzzles
مقدمه
برای اینکه یک سری سوال در هنگام عضویت در SMF پرسیده شود بسته توسعه دهنده Anti-Bot Registration Puzzles را نصب میکنیم
روش کار
در پوشه Sources فایل Register.php را باز کنید و این کد را پیدا کنید:
<source lang="php">
// Are they under age, and under age users are banned?
</source>
و قبل از آن کد زیر را قرار دهید
<source lang="php">
// Start of Anti-bot Registration Puzzles Mod
// Checks whether field was completed, if not it goes to an error screen if(empty($_SESSION['puzzle_dynamic_input']) || empty($_POST[$_SESSION['puzzle_dynamic_input']])) fatal_lang_error('puzzle_incomplete', false); // If puzzle was answered incorrectly elseif (md5(strtolower($_POST[$_SESSION['puzzle_dynamic_input']])) != $_SESSION['puzzle_code']) fatal_lang_error('puzzle_incorrect', false); // End of Anti-bot Registration Puzzles Mod
</source>
سپس کد زیر را پیدا کنید:
<source lang="php">
// Under age restrictions?
if (!empty($modSettings['coppaAge'])) { $context['show_coppa'] = true; $context['coppa_desc'] = sprintf($txt['register_age_confirmation'], $modSettings['coppaAge']); }
</source>
و بعد از آن این کد را قرار دهید:
<source lang="php">
// Start of Anti-bot Registration Puzzles Mod
$puzzles = array( 'shapes' => create_function(, ' $a = array(0 => "sides", 1 => "corners"); $b = rand(0,1); $c = array(\'square\' => 4, \'rectangle\' => 4, \'pentagon\' => 5, \'hexagon\' => 6, \'heptagon\' => 7, \'octagon\' => 8);
$d = array_rand($c); // randomly select a shape $e = $c[$d]; // the answer global $txt; $txt[\'puzzle_shapes\'] = sprintf(($d == \'octagon\' ? $txt[\'puzzle_shapes2\'] : $txt[\'puzzle_shapes\']), $txt[\'puzzle_\'.$a[$b]], $txt[\'puzzle_\'.$d]); return array(\'shapes\', \'\', md5($e)); '), 'math' => create_function(, ' $a = array(); $a[0] = rand(5,19); $a[1] = rand(1,$a[0]-2); $a[2] = rand(1,($a[0]-$a[1]-2)); $a[3] = array("+","-"); $a[4] = $a[3][array_rand($a[3])]; $a[5] = $a[3][array_rand($a[3])]; $d = "$a[0]$a[4] $a[1] $a[5] $a[2]"; eval("\$d=" . $d . ";"); return array(\'math\', "$a[0] $a[4] $a[1] $a[5] $a[2] =", md5($d)); '), 'math2' => create_function(, ' $a = array(); $a[0] = rand(5,19); $a[1] = rand(1,$a[0]-2); $a[2] = rand(1,($a[0]-$a[1]-2)); $a[3] = array("+","-"); $a[4] = $a[3][array_rand($a[3])]; $a[5] = $a[3][array_rand($a[3])]; $c = array(rand(0,1),rand(0,1),rand(0,1)); $d = "$a[0]$a[4] $a[1] $a[5] $a[2]"; // Whats the sum/answer eval("\$d=" . $d . ";"); // Access txt strings global $txt; return array(\'math\', \'\'.($c[0] ? $a[0] : $txt[\'puzzle_\'.$a[0]]).\' \'.$a[4].\' \'.($c[1] ? $a[1] : $txt[\'puzzle_\'.$a[1]]).\' \'.$a[5].\' \'.($c[2] ? $a[2] : $txt[\'puzzle_\'.$a[2]]).\' = \', md5($d)); '), 'colors' => create_function(, ' $a = array(\'red\' => \'#FF0033\', \'orange\' => \'#FF6600\', \'yellow\' => \'#FFFF33\', \'green\' => \'#006600\', \'blue\' => \'#0033FF\', \'purple\' => \'#663366\', \'pink\' => \'#FF9999\', \'black\' => \'#000000\', \'grey\' => \'#999999\'); // Select them randomly $b = array_rand($a,8); $c = $b[rand(0,7)]; // the answer $d = \'\'; // Access txt strings global $txt; for($i=0;$i<=7;$i++) { // Color or hex? randomly change $e = rand(0,1); $j = $i+1; if($c == $b[$i] || $c == $b[$j]) $d .= \'\'. $txt[\'puzzle_\'.$c] .\' \'; else $d .= \'\'. $txt[\'puzzle_
\'.$b[$j]] .\' \';
$i++; } unset($a,$b,$e,$i,$j); return array(\'colors\', $d, md5(strtolower($txt[\'puzzle_\'.$c]))); '), ); // Generate a new puzzle code every time $_SESSION['puzzle_dynamic_input'] = $_SESSION['puzzle_code'] = ; // Generate Random field name $range1 = range('a', 'z'); $range2 = range(0, 9); // Must start with a letter not a digit $_SESSION['puzzle_dynamic_input'] = $range1[array_rand($range1)]; // Length over 8 $rand = rand(8,12); for($i=0;$i<=$rand;$i++) $_SESSION['puzzle_dynamic_input'] .= (rand(0, 1) == 0) ? $range1[array_rand($range1)] : $range2[array_rand($range2)]; unset($range1, $range2, $rand); // Choose a puzzle $context['puzzle'] = $puzzles[array_rand($puzzles)](); $_SESSION['puzzle_code'] = $context['puzzle'][2]; $context['puzzle'][2] = $_SESSION['puzzle_dynamic_input']; unset($puzzles); // End of Anti-bot Registration Puzzles Mod
</source>
درون پوشه قالب سایت خود اگه فایل Register.template.php وجود دارد، این تغییرات را در آن ایجاد کنید و اگر نیست در پوشه قالب پیش فرض در فایل Register.template.php این تغییرات را اعمال کنید.
کد زیر را پیدا کنید:
<source lang="php">
// Are there age restrictions in place?
if (!empty($modSettings['coppaAge']))
</source>
و قبل از آن این کد را قرار دهید
<source lang="php">
// Start of Anti-bot Registration Puzzles Mod echo '<tr valign="top"> <td width="40%" valign="top"> '.$txt['puzzle_'.$context['puzzle'][0]].'
'.$txt['puzzle_antibot'].' </td> <td> '. ( empty($context['puzzle'][1]) ? : $context['puzzle'][1].'
' ) .' <input type="text" name="'.$context['puzzle'][2].'" size="30" value="" tabindex="', $context['tabindex']++, '" /> </td> </tr>'; // End of Anti-bot Registration Puzzles Mod
</source>
در آخرین مرحله در فایل Modifications.english.php در پوشه languages در داخل پوشه قالب پیش فرض این تغییرات را ایجاد کنید
قبل از کد
<source lang="php">
?>
</source>
این کد را قرار دهید
<source lang="php">
$txt['puzzle_colors'] = 'Which word is the same as its color'; $txt['puzzle_math'] = 'What is the sum of (as a number)'; $txt['puzzle_shapes'] = 'How many %s does a %s have?'; $txt['puzzle_shapes2'] = 'How many %s does an %s have?'; $txt['puzzle_sides'] = 'sides'; $txt['puzzle_corners'] = 'corners'; $txt['puzzle_incomplete'] = 'You did not complete the anti-bot puzzle. Please try again.'; $txt['puzzle_incorrect'] = 'You incorrectly answered the anti-bot puzzle. Please try again.'; $txt['puzzle_antibot'] = 'Anti-bot measure'; $txt['puzzle_red'] = 'Red'; $txt['puzzle_orange'] = 'Orange'; $txt['puzzle_yellow'] = 'Yellow'; $txt['puzzle_green'] = 'Green'; $txt['puzzle_blue'] = 'Blue'; $txt['puzzle_purple'] = 'Purple'; $txt['puzzle_pink'] = 'Pink'; $txt['puzzle_black'] = 'Black'; $txt['puzzle_grey'] = 'Grey'; $txt['puzzle_triange'] = 'Triangle'; $txt['puzzle_square'] = 'Square'; $txt['puzzle_rectangle'] = 'Rectangle'; $txt['puzzle_pentagon'] = 'Pentagon'; $txt['puzzle_hexagon'] = 'Hexagon'; $txt['puzzle_heptagon'] = 'Heptagon'; $txt['puzzle_octagon'] = 'Octagon'; $txt['puzzle_1'] = 'ONE'; $txt['puzzle_2'] = 'TWO'; $txt['puzzle_3'] = 'THREE'; $txt['puzzle_4'] = 'FOUR'; $txt['puzzle_5'] = 'FIVE'; $txt['puzzle_6'] = 'SIX'; $txt['puzzle_7'] = 'SEVEN'; $txt['puzzle_8'] = 'EIGHT'; $txt['puzzle_9'] = 'NINE'; $txt['puzzle_10'] = 'TEN'; $txt['puzzle_11'] = 'ELEVEN'; $txt['puzzle_12'] = 'TWELVE'; $txt['puzzle_13'] = 'THIRTEEN'; $txt['puzzle_14'] = 'FOURTEEN'; $txt['puzzle_15'] = 'FIFTEEN'; $txt['puzzle_16'] = 'SIXTEEN'; $txt['puzzle_17'] = 'SEVENTEEN'; $txt['puzzle_18'] = 'EIGHTEEN'; $txt['puzzle_19'] = 'NINETEEN';
</source>
در صورتی که میخواهید این مد به صورت کاملا فارسی نمایش داده شود تغییرات مرحله آخر را در فایل Modifications.persian.php نیز انجام داده و عبارات آن را ترجمه کنید.
برای مثال
<source lang="php">
$txt['puzzle_math'] = 'What is the sum of (as a number)'; $txt['puzzle_math'] = 'حاصل عددی عبارت مقابل چیست؟ ';
</source>
گردآورنده : prin.ir
استفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.
|