نصب دستی 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


8.pngاستفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.