Защита от регистрации ботов "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!

