» » Klausimų - Atsakymų generacija

Klausimų - Atsakymų generacija

Klausimų - Atsakymų generacija


Kaip ir visi žinote, 10 dle versijoj atsirado apsauga nuo spamo klausimai ir atsakymai, o čia jų generacija
Hackas generuoja klausimus iratsakymus aritmetiniu būdu. Štai pvz:
Parašykite atsakymą: 6 + 15 (atsakymas raidėmis)
Parašykite atsakymą: 6 + 15 (atsakymas skaičiais)
Parašykite atsakymą: 13 - 3 (atsakymas raidėmis)
Parašykite atsakymą: 13 - 3 (atsakymas skaičiais)

Atsakymai taip pat sugeneruojami automatiškai pvz jei buvo klausimas:

Parašykite atsakymą: 13 - 3 (atsakymas raidėmis) atsakymas bus: dešimt
Parašykite atsakymą: 13 - 3 (atsakymas skaičiais) atsakymas bus: 10

Instaliacija:
Faile engine/inc/question.php žemiau šios eilutės:
if( $member_id['user_group'] != 1 ) {
	msg( "error", $lang['addnews_denied'], $lang['db_denied'] );
}


Pridedame:
/* generatorius */
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 < 20; $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' => 'Parašykite atsakymą: '.$example[$key][0].' (atsakymas skaičiais)','answer' => $example[$key][1]);
$question[] = array('question' => 'Parašykite atsakymą: '.$example[$key][0].' (atsakymas raidėmis)','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();
}


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


Įkeliame:
<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="Sugeneruoti klausimus" name="btn-generate" id="btn-generate" style="width:180px;">


Prieš ženklą:
?>


Įdedame:
class Plural { 
const MALE = 1; 
const FEMALE = 2; 
const NEUTRAL = 3; 
protected static $_digits = array( 
 self::MALE => array('nulis', 'vienas', 'du', 'trys', 'keturi','penki', 'šeši', 'septyni', 'aštuoni', 'devyni'), 
 self::FEMALE => array('nulis', 'viena', 'dvi', 'trys', 'keturios','penkios', 'šešios', 'septynios', 'aštuonios', 'devynios'), 
 self::NEUTRAL => array('nulis', 'vienas', 'du', 'trys', 'keturi','penki', 'šeši', 'septyni', 'aštuoni', 'devyni') 
 ); 
protected static $_ths = array( 0 => array('','',''), 1=> array('tūkstantis', 'tūkstančiai', 'tūkstančių'), 2 => array('milijonas', 'milijonai', 'milijonų'), 
3 => array('milijardas','milijardai','milijardų'), 4 => array('trilijonas','trilijonai','trilijonų'), 5 => array('kvadralijonas','kvadralijonai','kvadralijonų')); 
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=>'dešimt', 1=>'vienuolika', 2=>'dvylika', 3=>'trylika', 4=>'keturiolika', 5=>'penkiolika', 6=>'šešiolika', 7=>'septyniolika', 8=>'aštuoniolika', 9=>'devyniolika' ); 
protected static $_tens = array( 2=>'dvidešimt', 3=>'trisdešimt', 4=>'keturiasdešimt', 5=>'penkiasdešimt', 6=>'šešiasdešimt', 7=>'septyniasdešimt', 8=>'aštuoniasdešimt', 9=>'devyniasdešimt'); 
protected static $_hundreds = array( 1=>'šimtas', 2=>'du šimtai',3=>'trys šimtai',4=>'keturi šimtai', 5=>'penki šimtai',6=>'šeši šimti', 7=>'septyni šimtai', 8=>'aštuoni šimtai', 9=>'devyni šimtai' 
 ); 

 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; 
 }}

Tinka: 10.X
Vertimas: Lietuvių

Komentarai

Informacija

Mielas lankytojau. Tu čia esi kaip neregistruotas vartotojas.
Mes siūlome tau užsiregistruoti arba tiesiog prisijungti naudojant savo prisijungimo duomenis, tam, kad galėtum įkelti bei komentuoti norimas naujienas.

Susirašinėjimai