Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Опен Ресурс > Разработчикам > Готовые хаки

Ответ
 
Опции темы Опции просмотра
LARK вне форума LARK
[исход]

Аватар для LARK

| Цитировать Старый #1 07-02-2012, 18:05

В прилагаемых архивах хак добавляющий текстовую капчу, для RUNCMS 2.2.2 и RUNCMS 1.6.2. (обратите внимание, что для RUNCMS 1.7 это не подходит)

ВНИМАНИЕ! Это alpha версия, предназначенная для тестирования.

Устанавливайте ее на рабочие сайты на свой страх и риск.


Как устанавливать данный хак, сможете прочитать в файле readme_rus.txt, в прикрепленных архивах.

---

Для тех, кто хочет вручную добавить этот хак, привожу пример для RUNCMS 1.6.2.

Будут изменены следующие файлы:

/register.php
/include/registerform.php
/language/russian/user.php
/modules/system/admin/captcha/language/russian/captcha.php
/modules/system/admin/captcha/main.php

и добавлен новый файл

/modules/system/cache/tcaptcha.php

---

1) Открываем файл

/register.php

Находим строку

PHP код:
include_once("./mainfile.php"); 


и после нее добавляем

PHP код:
include_once(XOOPS_ROOT_PATH."/modules/system/cache/tcaptcha.php"); 


находим функцию userCheck() и после этой функции, т.е. после строк

PHP код:
return $stop;



Добавляем

PHP код:
function checkTCaptcha($tcaptcha)
{
    
$stop '';
    
    if (
$tcaptcha['use_tc'] == 1) {

        
$qq_arr preg_split('/[\n\r]+/'stripslashes($tcaptcha['tc_qq']));
        
$ans_arr explode("|"strtolower($qq_arr[intval($_POST['q_id'])]));
        
array_shift($ans_arr);

        
array_walk($ans_arrcreate_function('&$val''$val = trim($val);'));

        if (!
in_array(strtolower(trim($_POST['tc_ans'])), $ans_arr)) {
            
$stop .= _US_WRONGTCANSWER '<br />';
        }
    }
    
    return 
$stop;



Находим строки (они в двух местах)

PHP код:
$stop        userCheck($uname$email$passw$vpassw); 


И после них ставим

PHP код:
$stop        .= checkTCaptcha($tcaptcha); 
Находим строки

PHP код:
<input type='hidden' name='verify_crc' value='".$myts->makeTboxData4PreviewInForm($verify_crc)."' />
<
input type='hidden' name='keystring' value='".$myts->makeTboxData4PreviewInForm($_REQUEST['keystring'])."' /> 

И после них добавляем

PHP код:
<input type='hidden' name='tc_ans' value='".$myts->makeTboxData4PreviewInForm($tc_ans)."' />
<
input type='hidden' name='q_id' value='" . intval($q_id) . "' /> 

2) Открываем файл

/include/registerform.php

Находим строку

PHP код:
$required = array("uname""email""passw""vpassw"); 
И перед ней ставим

PHP код:
if ($tcaptcha['use_tc'] == && !$xoopsUser) {

    
$qq preg_split('/[\n\r]+/'stripslashes($tcaptcha['tc_qq']));
    
$q_id array_rand($qq);
    
$question array_shift(explode('|'$qq[$q_id]));
    
    
$tcaptcha_tray  = new XoopsFormElementTray(_US_ANSWERTHEQUESTION"<br /><br />");
    
$tcaptcha_tray->addElement(new XoopsFormLabel($question));
    
$tcaptcha_tray->addElement(new XoopsFormText('''tc_ans'3060''));

    
$reg_form->addElement($tcaptcha_tray);
    
$reg_form->addElement(new XoopsFormHidden("q_id"$q_id));




3) Открываем файл

/language/russian/user.php

в конце файла перед

PHP код:
?> 
Ставим
PHP код:
define("_US_WRONGTCANSWER","Вы неправильно ответили на проверочный вопрос. Пожалуйста, измените ваш ответ или обновите страницу для генерации другого вопроса. Если вы не способны ответить на проверочные вопросы, пожалуйста, свяжитесь с администрацией сайта.");
define("_US_ANSWERTHEQUESTION""Пожалуйста, ответьте на следующий вопрос:"); 


4) Открываем файл

/modules/system/admin/captcha/main.php

Находим функцию make_menu()

Находим строку

PHP код:
include("./cache/kcaptcha.php"); 


и после нее ставим

PHP код:
include("./cache/tcaptcha.php"); 


находим строку

PHP код:
$form->addElement($jpeg_quality); 


И после нее ставим

PHP код:
  $form->addElement(new FormHeadingRow(_AM_SETTINGTCAPTCHA));
   
$form->addElement(new XoopsFormRadioYN(_AM_ENABLETCAPTCHA"use_tc"$tcaptcha['use_tc'], _YES,_NO));
   
$form->addElement(new XoopsFormTextArea(_AM_QUESTIONSANDANSWERS'tc_qq'stripslashes($tcaptcha['tc_qq']), 10)); 


Находим функцию save_maint()

PHP код:
function save_maint($content)
{
   global 
$xoopsConfig$myts$_COOKIE;

   
$filename RC_MOD_PATH."/system/cache/kcaptcha.php";

   if (
$file fopen($filename"w"))
   {
      
fwrite($file$content);
      
fclose($file);
      
redirect_header("admin.php?fct=captcha"1_UPDATED);
      exit();
   }
   else
   {
      
redirect_header("admin.php?fct=captcha"1_NOTUPDATED);
      exit();
   }



И полностью ее заменяем на

PHP код:
function save_maint($content$filename 'kcaptcha.php')
{

   
$filename RC_MOD_PATH."/system/cache/" $filename;

   if (
$file fopen($filename"w"))
   {
      
fwrite($file$content);
      
fclose($file);
      return 
true;
   }
   else
   {
      return 
false;
   }

Находим строки

PHP код:
         save_maint($content);
         
make_menu(); 


и полностью заменяем их на

PHP код:
if (save_maint($content, 'kcaptcha.php') == false) {
             redirect_header("admin.php?fct=captcha", 3, _NOTUPDATED);
             exit();
         }
      
         $tc_qq = $myts->stripPHP($_REQUEST['tc_qq']);

         $content = "<?php\n\n";
         
$content .= '$tcaptcha[\'use_tc\'] = ' . (int)$_REQUEST['use_tc'] . ";\n";
         
$content .= '$tcaptcha[\'tc_qq\'] = \'' . $myts->oopsAddSlashesGPC($tc_qq) . '\''. ";\n";
         
$content .= '?>';
      
         if (save_maint(
$content, 'tcaptcha.php') == false) {
             redirect_header("
admin.php?fct=captcha", 3, _NOTUPDATED);
             exit();
         }
      
         redirect_header("
admin.php?fct=captcha", 3, _UPDATED);
         exit();
5) Открываем файл

/modules/system/admin/captcha/language/russian/captcha.php

в конец файла перед

PHP код:
?> 
Добавляем
PHP код:
define("_AM_SETTINGTCAPTCHA""Настройки текстовой капчи (дополнительные вопросы и ответы при регистрации)");
define("_AM_ENABLETCAPTCHA""Включить текстовую капчу");
define("_AM_QUESTIONSANDANSWERS""Введите набор из вопроса и ответа(-ов) <u>в каждой строке</u>. <br /><br /><span style=\"font-weight:normal;\">Сначала идет вопрос, потом, после вертикальной черты, ответ, или несколько вариантов ответа, разделенные вертикальной чертой.<br /><br />Формат: вопрос|ответ<br /><br />или<br /><br />вопрос|ответ1|ответ2|ответ3<br /><br /><b>Пример:</b><br /><br /><span class=\"rcxCode\">Пожалуйста, напечатайте без кавычек слово \"Дормедонт\"|Дормедонт<br />Сколько глаз у Циклопа?|один|1</span><br /><br /><u>Учтите, что ответы не чувствительны к регистру</u>.</span>"); 


6) Скачиваем прилагаемый архив tcaptcha.zip и распаковываем содержащийся в нем файл tcaptcha.php в директорию

/modules/system/cache/

После чего даем ему права доступа chmod = 666

7) идем в админку в раздел CAPTCHA, и добавляем нужные проверочные вопросы, там же можно отключить текстовую капчу.
Вложения
Тип файла: zip h_runcms-b2.2.2_tcaptcha-v1.0alpha-1.zip (17.8 Кбайт, 3 просмотров)
Тип файла: zip h_runcms-b1.6.2_tcaptcha-v1.0alpha-1.zip (16.7 Кбайт, 14 просмотров)
Тип файла: zip tcaptcha.zip (248 байт, 5 просмотров)

Последний раз редактировалось LARK, 10-20-2012 в 14:17


Правила нашего Форума :: О клубе пользователей RUNCMS :: Рекомендации по публикации сообщений :: Прежде чем задать вопрос воспользуйтесь Поиском
-------------------------------------------------------------------
Если что-то не работает, задавая вопрос, ! ОБЯЗАТЕЛЬНО ! пишите версию RUNCMS/модуля/PHP/MySQL и текст самой ошибки.
Посетить домашнюю страницу LARK
  Сообщения: 4,185 c 20.09.2003 | Репутация: 223
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 75.91 Kb. compressed to 73.78 Kb. by saving 2.13 Kb. (2.81%)
Page generated in 0.10239 seconds with 11 queries