Хак для DLE Генератор вопросов и ответов

Рубрика: Хаки для DLE » Хак DLE 11.2, 11.1, 11.0, 10.6, 10.5, 10.4, 10.3, 10.2, 10.1, 10.0, 9.8, 9.7, 9.6, 9.5, 9.4, 9.3, 9.2, 9.0
Хак для DLE Генератор вопросов и ответов
Представляем вашему вниманию на dle9.com Хак для DLE Генератор вопросов и ответов в админ панели, который избавит вас от придумывания вопросов и ответов при использование модуля на многопользовательском скрипте DataLife Engine 10.

Дабы в десятой версии DLE появился модуль "Вопросы и ответы для защиты от спама", которые более эффективен против спама, чем его аналоги (каптча или скрипа "Я не робот"). В нем вы приходится создавать вопросы в вручную, однако данный хак для дле позволит генерировать вопросы и ответы автоматически, просто нажав лишь на кнопку.

Хак генерирует вопросы по принципу арифметических примеров:
Решите пример: 6 + 15 (ответ прописью)
Решите пример: 6 + 15 (ответ числом)
Решите пример: 13 - 3 (ответ прописью)
Решите пример: 13 - 3 (ответ числом)

Ответы автоматически генерируются в соответствии с вопросом, так если вопрос был

Решите пример: 13 - 3 (ответ прописью) сгенированый ответ десять

Установка:
Файл engine/inc/question.php после строки:

if( $member_id['user_group'] != 1 ) {
	msg( "error", $lang['addnews_denied'], $lang['db_denied'] );
}


Добавить ниже:

/* генератор вопросов и ответов */
if ($_GET['action'] == "generate") {
if( $_REQUEST['user_hash'] == "" or $_REQUEST['user_hash'] != $dle_login_hash ) {die( "Hacking attempt! User not found" );}
for ($i = 0; $i < 40; $i++) {
$p = mt_rand(1, 15);
$m = mt_rand(1, 15);
if($p < $m) $example[] = array($p.' + '.$m ,$p+$m);
if($p > $m) $example[] = array($p.' - '.$m  ,$p-$m);		
}
foreach($example as $key => $val){
$question[] = array('question' => 'Решите пример: '.$example[$key][0].' (ответ числом)','answer' => $example[$key][1]);
$question[] = array('question' => 'Решите пример: '.$example[$key][0].' (ответ прописью)','answer' => plural::asString($example[$key][1],plural::MALE));
}
foreach($question as $val){
$db->query( "INSERT INTO " . PREFIX . "_question (question, answer) VALUES ('{$val['question']}', '{$val['answer']}')" );
$db->query( "INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('".$db->safesql($member_id['name'])."', '{$_TIME}', '{$_IP}', '84', '".htmlspecialchars($question, ENT_QUOTES, $config['charset'])."')" );	
} 
header( "Location: ?mod=question" ); die();
}


После строки:

<input type="button" class="btn btn-primary" value="{$lang['btn_question']}" name="btn-new" id="btn-new" style="width:180px;">


Вставить:

<script type="text/javascript">
$(function(){
$('#btn-generate').click(function(){
document.location='?mod=question&user_hash={$dle_login_hash}&action=generate';
return false;
});});
</script>
<input type="button" class="btn btn-primary" value="Сгенерировать вопросы" name="btn-generate" id="btn-generate" style="width:180px;">

Над закрывающим знаком:

?>


Вставить класс для перевода чисел в русские слова:

class Plural { 
const MALE = 1; 
const FEMALE = 2; 
const NEUTRAL = 3; 
protected static $_digits = array( 
 self::MALE => array('ноль', 'один', 'два', 'три', 'четыре','пять', 'шесть', 'семь', 'восемь', 'девять'), 
 self::FEMALE => array('ноль', 'одна', 'две', 'три', 'четыре','пять', 'шесть', 'семь', 'восемь', 'девять'), 
 self::NEUTRAL => array('ноль', 'одно', 'два', 'три', 'четыре','пять', 'шесть', 'семь', 'восемь', 'девять') 
 ); 
protected static $_ths = array( 0 => array('','',''), 1=> array('тысяча', 'тысячи', 'тысяч'), 2 => array('миллион', 'миллиона', 'миллионов'), 
3 => array('миллиард','миллиарда','миллиардов'), 4 => array('триллион','триллиона','триллионов'), 5 => array('квадриллион','квадриллиона','квадриллионов')); 
protected static $_ths_g = array(self::NEUTRAL, self::FEMALE, self::MALE, self::MALE, self::MALE, self::MALE); // hack 4 thsds 
protected static $_teens = array( 0=>'десять', 1=>'одиннадцать', 2=>'двенадцать', 3=>'тринадцать', 4=>'четырнадцать', 5=>'пятнадцать', 6=>'шестнадцать', 7=>'семнадцать', 8=>'восемнадцать', 9=>'девятнадцать' ); 
protected static $_tens = array( 2=>'двадцать', 3=>'тридцать', 4=>'сорок', 5=>'пятьдесят', 6=>'шестьдесят', 7=>'семьдесят', 8=>'восемьдесят', 9=>'девяносто'); 
protected static $_hundreds = array( 1=>'сто', 2=>'двести',3=>'триста',4=>'четыреста', 5=>'пятьсот',6=>'шестьсот', 7=>'семьсот', 8=>'восемьсот', 9=>'девятьсот' 
 ); 

 protected function _ending($value, array $endings = array()) { 
$result = ''; 
if ($value < 2) $result = $endings[0]; 
 elseif ($value < 5) $result = $endings[1]; 
 else $result = $endings[2]; 
return $result; } 

 protected function _triade($value, $mode = self::MALE, array $endings = array()) { 
 $result = ''; 
 if ($value == 0) { return $result; } 
 $triade = str_split(str_pad($value,3,'0',STR_PAD_LEFT)); 
 if ($triade[0]!=0) { $result.= (self::$_hundreds[$triade[0]].' '); } 
 if ($triade[1]==1) { $result.= (self::$_teens[$triade[2]].' '); } 
 elseif(($triade[1]!=0)) { $result.= (self::$_tens[$triade[1]].' '); } 
 if (($triade[2]!=0)&&($triade[1]!=1)) { $result.= (self::$_digits[$mode][$triade[2]].' '); } 
 if ($value!=0) { $ends = ($triade[1]==1?'1':'').$triade[2]; $result.= self::_ending($ends,$endings).' '; } 
 return $result; 
 } 

 public function asString($value, $mode = self::MALE, array $endings = array()) { 
 if (empty($endings)) { $endings = array('','',''); } 
 $result = ''; 
 $steps = ceil(strlen($value)/3); 
 $sv = str_pad($value, $steps*3, '0', STR_PAD_LEFT); 
 for ($i=0; $i<$steps; $i++) { 
 $triade = substr($sv, $i*3, 3); 
 $iter = $steps - $i; 
 $ends = ($iter!=1)?(self::$_ths[$iter-1]):($endings); 
 $gender = ($iter!=1)?(self::$_ths_g[$iter-1]):($mode); 
 $result.= self::_triade($triade,$gender, $ends); 
 } 
 return $result; 
 }}



Скачать хаки для dle, как Хак Генератор вопросов и ответов
  • 60
Рубрика: DLE хаки » Хак для DLE
Ранее » Хак Transfer для DLE« Далее Для DLE хак Статистика рейтинга новости
Добавление комментарияОставить комментарий
  • № :2
  • 12 октября 2014 16:38
Цитата: wrip
Скажите пожалуйста, что можно сделать с одной категорией на дле? А проблемка такая: у меня одна категория дает много посетителей, даже больше чем главная страница, и мне нужно понизить ее в выдаче так как категория не популярная. Так вот что можно сделать для этого??

Такое может быть из-за спама... по сути не чего делать не надо само устаканиться. Выяснить с помощью гугл веб-мастера откуда переходы, если с поисковика лучше оставить. Просто сделать то можно, но и количество посетителей убавиться.

Главное в этой категории сделать обратную ссылку на главную.

Также может быть такое из-за неправильного перехода с другого места, что-то вроде редиректа. Это можно узнать в гугл веб-мастер и исправить. Ошибки верстки. Смотрите откуда ноги растут.
  • № :1
  • 12 октября 2014 14:36
Скажите пожалуйста, что можно сделать с одной категорией на дле? А проблемка такая: у меня одна категория дает много посетителей, даже больше чем главная страница, и мне нужно понизить ее в выдаче так как категория не популярная. Так вот что можно сделать для этого??