form set error is not working properly
In form_set_error, the first parameter should be form name, if you are not sure of the name, just leave empty.

form_set_error('', t('hello test'));


This should work just fine.

UPDATED ANSWER

If you would like to have only your validation and skip the rest of Drupal core's validation for that particular form, you can unset the validator function and inject your own.

unset($form['#validate']);
$form['#validate'][] = 'zloginsecurity_validators';


Or

If you like to have both and give priority to yours first, then

$default_validators = $form['#validate'];
unset($form['#validate']);
$form['#validate'][] = 'zloginsecurity_validators';
foreach ($default_validators as $val) {
  $form['#validate'][] = $val;
}