I would like to add image verification to my login form, but I don't know how to force users to verify (because login works without filling out the bot form)
This is my controller:
public function login(){
if(isset($_POST['login']) && $_POST['login'] == 1){
foreach($_POST as $key=>$value){
$this->Maccount->$key = trim($value);
}
if(!isset($this->Maccount->user))
$this->errors[] = 'No username given.';
else{
if(!isset($this->Maccount->password))
$this->errors[] = 'No password given.';
else{
if(!$this->Maccount->valid_username($this->Maccount->user))
$this->errors[] = 'Invalid username.';
else{
if(!$this->Maccount->valid_password($this->Maccount->password))
$this->errors[] = 'Invalid password.';
else{
if($this->Maccount->login_user()){
header('Location: '.$this->config->base_url.'account');
}
else{
$this->errors[] = 'Wrong username or password.';
}
}
}
}
}
}
if(!empty($this->errors)){
$this->load->set('errors', $this->errors);
}
$this->load->view($this->load->get('tmp').DS.'account'.DS.'login');
}
and this is my html form:
<form id="login" name="login" method="post" action="<?php echo load::get('base_url');?>account/login" accept-charset="UTF-8">
<input id="login_field" type="text" name="user" id="user" required placeholder="Account">
<input id="login_field" name="password" id="password" type="password" required placeholder="*******">
<input name="submit" type="image" value="Log In" src="<?php echo load::get('base_url');?>assets/<?php echo load::get('tmp');?>/images/login.png">
<input type="hidden" name="login" value="1" />
<img src="<?php echo load::get('base_url');?>image_verify.php" alt="Image Verify">
<input name="bot" type="text" class="post" id="bot" size="6" maxlength="10">
</form>