A CAPTCHA is a randomly generated string (or photo group) that appears when verification is required. It is an essential requirement for cutting spam on a website.
Project structure
Before to make a captcha in Codeigniter first see the file structure of the project
Create Controller
Create a file named application/controllers/Captcha.php in the Controller folder. Open the file in your code editor and add the following code to it:
application/controllers/Captcha.php
<?php
defined('BASEPATH') OR exit('your exit message');
class Captcha extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('session');
$this->load->helper('captcha');
}
public function index() {
if ($this->input->post('submit')) {
$captcha_insert = $this->input->post('captcha');
$contain_sess_captcha = $this->session->userdata('valuecaptchaCode');
if ($captcha_insert === $contain_sess_captcha) {
echo 'Success';
} else {
echo 'Failure';
}
}
$config = array(
'img_url' => base_url() . 'image_for_captcha/',
'img_path' => 'image_for_captcha/',
'img_height' => 45,
'word_length' => 5,
'img_width' => '145',
'font_size' => 20
);
$captcha = create_captcha($config);
$this->session->unset_userdata('valuecaptchaCode');
$this->session->set_userdata('valuecaptchaCode', $captcha['word']);
$data['captchaImg'] = $captcha['image'];
$this->load->view('mycaptcha', $data);
}
public function refresh() {
$config = array(
'img_url' => base_url() . 'image_for_captcha/',
'img_path' => 'image_for_captcha/',
'img_height' => 45,
'word_length' => 5,
'img_width' => '145',
'font_size' => 20
);
$captcha = create_captcha($config);
$this->session->unset_userdata('valuecaptchaCode');
$this->session->set_userdata('valuecaptchaCode', $captcha['word']);
echo $captcha['image'];
}
}
Create Views
create a view to show the captcha image and input it to enter captcha code for verifying it
application/views/mycaptcha.php
<!DOCTYPE html>
<html>
<head>
<title>Implement Captcha in Codeigniter using helper</title>
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script>
$(document).ready(function() {
$('.captcha-refresh').on('click', function() {
$.get('<?php echo base_url() . 'Captcha/refresh'; ?>', function(data) {
$('#image_captcha').html(data);
});
});
});
</script>
</head>
<body>
<p id="image_captcha"><?php echo $captchaImg; ?></p>
<a href="javascript:void(0);" class="captcha-refresh" ><img style="width: 20px;"src="<?php echo base_url() . 'images/refresh.jpg'; ?>"/></a>
<form method="post">
<input type="text" name="captcha" value=""/>
<input type="submit" name="submit" value="SUBMIT"/>
</form>
</body>
</html>
Output: