Защита от регистрации ботов "checkbox'ом"

Материал из Документация NGCMS

Перейти к: навигация, поиск

Открываем: auth_basic.php

Находим:

array_push($params, array('name' => 'email', title => $lang['auth_email'], 'descr' => $lang['auth_email_descr'],'type' => 'input'));

После добавляем:

array_push($params, array('name' => 'who_bot', title => 'Если не бот сними галочку:', 'descr' =>  '','type' => 'checkbox'));

Находим:

// Preprocess login
if (strlen($values['login'])<3)
{
	// Слишком короткий логин
	$msg = $lang['auth_login_short'];
	return 0;
}

После добавляем:

if(isset($values['who_bot']) && !empty($values['who_bot']))
{
	// Дополнительная защита от ботов
	$msg = 'Ботам регистрация запрещена';
	return 0;
}

Открываем cmodules.php

Находим:

if ($param['type'] == 'text') {
	$tvars['vars']['input'] = '<textarea name="'.$param['name'].'" title="'.$param['title'].'" '.$param['html_flags'].'>'.secure_html($param['value']).'</textarea>';
} else if ($param['type'] == 'input') {
	$tvars['vars']['input'] = '<input name="'.$param['name'].'" type="text" title="'.$param['title'].'" '.$param['html_flags'].' value="'.secure_html($param['value']).'"/>';
} else if (($param['type'] == 'password')||($param['type'] == 'hidden')) {
	$tvars['vars']['input'] = '<input name="'.$param['name'].'" type="'.$param['type'].'" title="'.$param['title'].'" '.$param['html_flags'].' value="'.secure_html($param['value']).'"/>';
} else if ($param['type'] == 'select') {
	$tvars['vars']['input'] = '<select name="'.$param['name'].'" title="'.$param['title'].'" '.$param['html_flags'].'>';
	foreach ($param['values'] as $oid => $oval) {
		$tvars['vars']['input'].= '<option value="'.$oid.'"'.($param['value']==$oid?' selected':'').'>'.$oval.'</option>';
	}
		$tvars['vars']['input'].='</select>';
} else if ($param['type'] = 'manual') {
	$tvars['vars']['input'] = $param['manual'];
}

Меням на:

if ($param['type'] == 'text') {
	$tvars['vars']['input'] = '<textarea name="'.$param['name'].'" title="'.$param['title'].'" '.$param['html_flags'].'>'.secure_html($param['value']).'</textarea>';
} else if ($param['type'] == 'input') {
	$tvars['vars']['input'] = '<input name="'.$param['name'].'" type="text" title="'.$param['title'].'" '.$param['html_flags'].' value="'.secure_html($param['value']).'"/>';
} else if ($param['type'] == 'checkbox') {
	$tvars['vars']['input'] = '<input name="'.$param['name'].'" type="checkbox" title="'.$param['title'].'" '.$param['html_flags'].' value="1"  checked="checked"/>';
} else if (($param['type'] == 'password')||($param['type'] == 'hidden')) {
	$tvars['vars']['input'] = '<input name="'.$param['name'].'" type="'.$param['type'].'" title="'.$param['title'].'" '.$param['html_flags'].' value="'.secure_html($param['value']).'"/>';
} else if ($param['type'] == 'select') {
	$tvars['vars']['input'] = '<select name="'.$param['name'].'" title="'.$param['title'].'" '.$param['html_flags'].'>';
	foreach ($param['values'] as $oid => $oval) {
		$tvars['vars']['input'].= '<option value="'.$oid.'"'.($param['value']==$oid?' selected':'').'>'.$oval.'</option>';
	}
		$tvars['vars']['input'].='</select>';
} else if ($param['type'] = 'manual') {
	$tvars['vars']['input'] = $param['manual'];
}

И радуемся результату.

Тестировалось на версии 0.9.2!