{"id":388,"date":"2010-10-04T21:59:57","date_gmt":"2010-10-04T13:59:57","guid":{"rendered":"http:\/\/rais.my\/blog\/?p=388"},"modified":"2010-10-18T23:14:06","modified_gmt":"2010-10-18T15:14:06","slug":"captcha-dengan-codeigniter","status":"publish","type":"post","link":"https:\/\/rais.my\/blog\/captcha-dengan-codeigniter\/","title":{"rendered":"Captcha dengan CodeIgniter"},"content":{"rendered":"<p>Di sini contoh menggunakan captcha dengan codeigniter. Kod ini menggunakan contoh kod yang terdapat di Wiki web codeigniter. Satu table, satu fail controller, satu fail model dan satu folder diperlukan.<\/p>\n<p>Hasilnya boleh dilihat di sini &gt;&gt; <a href=\"http:\/\/rais.my\/dev\/example\/captcha\/index\" target=\"_blank\">Demo<\/a><\/p>\n<p>1. Bina satu folder &#8216;captcha&#8217; di direktori utama (satu aras dengan folder &#8216;system&#8217; dan &#8216;user_guide&#8217;)<\/p>\n<pre class=\"brush:php\">\r\n-->ci_root\r\n     -->captcha\r\n     -->system\r\n     -->user_guide<\/pre>\n<p>2. Bina satu table pangkalan data<\/p>\n<pre class=\"brush:php\">CREATE TABLE IF NOT EXISTS `captcha` (\r\n  `captcha_id` bigint(13) unsigned NOT NULL auto_increment,\r\n  `captcha_time` int(10) unsigned NOT NULL,\r\n  `ip_address` varchar(16) NOT NULL default '0',\r\n  `word` varchar(20) NOT NULL,\r\n  PRIMARY KEY  (`captcha_id`),\r\n  KEY `word` (`word`)\r\n)<\/pre>\n<p>3. Bina satu fail captcha.php di dalam controller<\/p>\n<pre class=\"brush:php\">\r\nclass Captcha extends Controller {\r\n\r\n\tfunction Captcha()\r\n\t{\r\n\t    parent::Controller();\t\r\n\t}\r\n        \r\n        function index()\r\n        {\r\n            $data['cap_img'] = $this->mcaptcha->make_captcha();\r\n            $this->load->view('myindex',$data);\r\n        }\r\n        \r\n        function mycaptcha()\r\n        {\r\n            $captcha = $this->input->post('captcha');\r\n            if($this->mcaptcha->check_captcha($captcha)){\r\n               $data['msg'] = \"Captcha match!\";   \r\n            } else {\r\n               $data['msg'] = \"Enter captcha . Please try again!\";\r\n            }\r\n\t    $captcha_result = '';\r\n\t    $data['cap_img'] = $this->mcaptcha->make_captcha();\r\n            $this->load->view('myindex', $data);\r\n        }\r\n\r\n}<\/pre>\n<p>4. Bina satu fail mcaptcha.php di dalam model<\/p>\n<pre class=\"brush:php\">\r\nclass Mcaptcha extends Model {\r\n\r\n\tfunction Mcaptcha()\r\n\t{\r\n\t\tparent::Model();\t\r\n\t}\r\n\t\r\n\tfunction make_captcha()\r\n\t{\r\n\t\t$this->load->plugin('captcha');\r\n\t\t$vals = array(\r\n\t\t\t'img_path' => 'captcha\/', \/\/ PATH for captcha ( *Must mkdir (htdocs)\/captcha )\r\n\t\t\t'img_url' => '..\/captcha\/', \/\/ URL for captcha img\r\n\t\t\t'img_width' => 200, \/\/ width\r\n\t\t\t'img_height' => 60, \/\/ height\r\n\t\t\t\/\/ 'font_path'    => '..\/system\/fonts\/2.ttf',\r\n\t\t\t'expiration' => 7200\r\n\t\t); \r\n\t\t\/\/ Create captcha\r\n\t\t$cap = create_captcha($vals); \r\n\t\t\/\/ Write to DB\r\n\t\tif ($cap) {\r\n\t\t\t$data = array(\r\n\t\t\t\t'captcha_id' => '',\r\n\t\t\t\t'captcha_time' => $cap['time'],\r\n\t\t\t\t'ip_address' => $this->input->ip_address(),\r\n\t\t\t\t'word' => $cap['word']\r\n\t\t\t);\r\n\t\t\t$query = $this->db->insert_string('captcha', $data );\r\n\t\t\t$this->db->query($query);\r\n\t\t}else {\r\n\t\t\treturn 'Umm captcha not work' ;\r\n\t\t}\r\n\treturn $cap['image'];\r\n\t}\r\n\r\n\tfunction check_captcha($captcha)\r\n\t{ \r\n\t\t\/\/ Delete old data ( 2hours)\r\n\t\t$expiration = time()-7200 ;\r\n\t\t$sql = \"DELETE FROM captcha WHERE captcha_time < ? \";\r\n\t\t$binds = array($expiration);\r\n\t\t$query = $this->db->query($sql, $binds);\r\n  \r\n\t\t\/\/checking input\r\n\t\t$sql = \"SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND captcha_time > ?\";\r\n\t\t$binds = array($captcha, $this->input->ip_address(), $expiration);\r\n\t\t$query = $this->db->query($sql, $binds);\r\n\t\t$row = $query->row();\r\n\r\n\t\tif ($row->count > 0)\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n}<\/pre>\n<p>5. Bina fail myindex.php di dalam view<\/p>\n<pre class=\"brush:php\">\r\nif(isset($msg)) echo '<font color=\"FF0000\">'.$msg.'<\/font><br>';\r\necho form_open('captcha\/mycaptcha');\r\n$captcha = array('name' => 'captcha');\r\n\r\n<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"0\">\r\n  <tr>\r\n    <td colspan=\"4\"><?php echo $cap_img;?><\/td>\r\n  <\/tr>\r\n  <tr>\r\n    <td colspan=\"4\"><?php echo form_input($captcha);?><\/td>\r\n  <\/tr>\r\n  <tr>\r\n    <td colspan=\"3\"><?php echo form_submit('mysubmit', 'Submit');?><\/td>\r\n    <td>&nbsp;<\/td>\r\n  <\/tr> \r\n<\/table>\r\n\r\necho form_close();\r\n\r\n<\/pre>\n<p>Hasilnya boleh dilihat di sini &gt;&gt; <a href=\"http:\/\/rais.my\/dev\/example\/captcha\/index\" target=\"_blank\">Demo<\/a><\/p>\n<p>Selamat Mencuba&#8230;<\/p>\n<p><a href=\"http:\/\/rais.my\">rais.my<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Di sini contoh menggunakan captcha dengan codeigniter. Kod ini menggunakan contoh kod yang terdapat di Wiki web codeigniter. Satu table, satu fail controller, satu fail model dan satu folder diperlukan. Hasilnya boleh dilihat di sini &gt;&gt; Demo 1. Bina satu folder &#8216;captcha&#8217; di direktori utama (satu aras dengan folder &#8216;system&#8217; dan &#8216;user_guide&#8217;) &#8211;>ci_root &#8211;>captcha &#8211;>system [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"cybocfi_hide_featured_image":"","footnotes":""},"categories":[9,6,26,4,5],"tags":[251,650],"class_list":["post-388","post","type-post","status-publish","format-standard","hentry","category-codeigniter","category-internet","category-opensource","category-php","category-programming","tag-captcha","tag-codeigniter"],"_links":{"self":[{"href":"https:\/\/rais.my\/blog\/wp-json\/wp\/v2\/posts\/388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rais.my\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rais.my\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rais.my\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rais.my\/blog\/wp-json\/wp\/v2\/comments?post=388"}],"version-history":[{"count":9,"href":"https:\/\/rais.my\/blog\/wp-json\/wp\/v2\/posts\/388\/revisions"}],"predecessor-version":[{"id":423,"href":"https:\/\/rais.my\/blog\/wp-json\/wp\/v2\/posts\/388\/revisions\/423"}],"wp:attachment":[{"href":"https:\/\/rais.my\/blog\/wp-json\/wp\/v2\/media?parent=388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rais.my\/blog\/wp-json\/wp\/v2\/categories?post=388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rais.my\/blog\/wp-json\/wp\/v2\/tags?post=388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}