Cara mudah membuat captcha di codeigniter

Cara mudah membuat captcha di codeigniter

Conten ini merupakan permintaan dari mas Alfen Febral , Cara mudah membuat captcha di codeigniter.

Spesifikasi source code :
  • codeigniter 3.4
  • php 5.4
Untuk materi ini sebenarnya sudah tersedia di dokumentasi-nya codeigniter , lihat disini. Namun saya akan coba membahasnya kembali disini.

Pertama, atur config.php di application/config/config.php
$config['base_url'] = ' /* url direktory projek*/ '; // contoh : http://localhost/iseng/ci-34-snipet/

Kedua, buat folder dengan nama "captcha", sejajar dengan folder system dan application.
Ketiga, buat controller baru dengan nama "captcha.php" , salin kode di bawah ini :
<?php 
defined('BASEPATH') exit('No direct script access allowed');

class Captcha extends CI_Controller {

function __construct() {
parent::__construct();

// load library dan helper
$this->load->library('session');
$this->load->helper(array('captcha','url','form'));
}

function index(){
$config_captcha = array(
'img_path' => './captcha/',
'img_url' => base_url().'captcha/',
'img_width' => '200',
'img_height' => 30,
'border' => 0,
'expiration' => 7200
);

// create captcha image
$cap = create_captcha($config_captcha);

// store image html code in a variable
$data['img'] = $cap['image'];

// store the captcha word in a session
$this->session->set_userdata('mycaptcha', $cap['word']);

$this->load->view('captcha_view.php', $data);
}

function cek() {
$secutity_code = $this->input->post('secutity_code');
$mycaptcha = $this->session->userdata('mycaptcha');

if ($this->input->post() && ($secutity_code == $mycaptcha)) {
// pesan akan muncul jika captcha benar
$this->session->set_flashdata('notif','<p style="color:green;"><b>Captcha benar :) </b></p>');
redirect('captcha');
} else {
// pesan akan muncul jika captcha salah
$this->session->set_flashdata('notif','<p style="color:red;"><b>Captcha salah :( </b></p>');
redirect('captcha');
}
}
}
?>

Keempat buat view baru dengan nama "captcha_view.php" , salin kode di bawah ini :

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to CodeIgniter</title>

<style type="text/css">

::selection { background-color: #E13300; color: white; }
::-moz-selection { background-color: #E13300; color: white; }

body {
background-color: #fff;
margin: 40px;
font: 13px/20px normal Helvetica, Arial, sans-serif;
color: #4F5155;
}

a {
color: #003399;
background-color: transparent;
font-weight: normal;
}

h1 {
color: #444;
background-color: transparent;
border-bottom: 1px solid #D0D0D0;
font-size: 19px;
font-weight: normal;
margin: 0 0 14px 0;
padding: 14px 15px 10px 15px;
}

code {
font-family: Consolas, Monaco, Courier New, Courier, monospace;
font-size: 12px;
background-color: #f9f9f9;
border: 1px solid #D0D0D0;
color: #002166;
display: block;
margin: 14px 0 14px 0;
padding: 12px 10px 12px 10px;
}

#body {
margin: 0 15px 0 15px;
}

p.footer {
text-align: right;
font-size: 11px;
border-top: 1px solid #D0D0D0;
line-height: 32px;
padding: 0 10px 0 10px;
margin: 20px 0 0 0;
}

#container {
margin: 10px;
border: 1px solid #D0D0D0;
box-shadow: 0 0 8px #D0D0D0;
}
</style>
</head>
<body>

<div id="container">
<h1>Subscribe</h1>

<div id="body">
<?php
if($this->session->flashdata('notif')){
echo $this->session->flashdata('notif');
}
?>
<?php echo form_open("captcha/cek");?>
<p>Nama: <input type="text" name="nama"></p>
<p>Nama: <input type="text" name="email"></p>
<p><?php echo $img; ?></p>
<p>Security: <input type="text" name="secutity_code"></p>
<p><input type="submit" name="submit" value="submit" /></p>
</form>
</div>

<p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds. <?php echo (ENVIRONMENT === 'development') ? 'CodeIgniter Version <strong>' . CI_VERSION . '</strong>' : '' ?></p>
</div>

</body>
</html>

Keterangan tercantum di kodingannya, Maaf keterangan tidak terlalu lengkap.
Komentar aja kalau ada yang mau di tanyakan :)


5/Post a Comment/Comments

Posting Komentar

Lebih baru Lebih lama