It has been quite a while since I posted anything on my blog. Recently I have been working on my small business web site and used opencart to create that web site. But by default Open Cart doesn't have a captcha for registering. Due to high no of bots available to create false accounts, it is a must to have captcha.
There is a post in Open Cart forum which shows how to enable opencart default captcha library in the registration page. But I wanted to use recaptcha which is much more hard to crack using image processing bots, has a built in audio playback and more importantly each time someone uses it in the back end they are helping to digitize scanned pages of books.
You need to register in recaptcha to get a public and private key for your domain name. After that you need to download the php library for recaptcha.
Step 1 :
Put the downloaded recaptchalib.php in /system directory
Step 2 :
Go to /catalog/view/theme/default or your custom theme folder /template/account/ and open register.tpl
Find the below code
and put this below
Step 3 :
Go to catalog/language/english/account.register.php and find this line
and put this below
and find this line
and put this below
Step 4 :
Go to catalog/controller/account/register.php and find this line
and put this line below
find this line
and put this below
find this line
and put this below
find this line
and put this below
That's it. Now you should see the recaptcha captcha in your registration page!
There is a post in Open Cart forum which shows how to enable opencart default captcha library in the registration page. But I wanted to use recaptcha which is much more hard to crack using image processing bots, has a built in audio playback and more importantly each time someone uses it in the back end they are helping to digitize scanned pages of books.
You need to register in recaptcha to get a public and private key for your domain name. After that you need to download the php library for recaptcha.
Step 1 :
Put the downloaded recaptchalib.php in /system directory
Step 2 :
Go to /catalog/view/theme/default or your custom theme folder /template/account/ and open register.tpl
Find the below code
<h2><?php echo $text_newsletter; ?></h2>
<div class="content">
<table class="form">
<tr>
<td><?php echo $entry_newsletter; ?></td>
<td><?php if ($newsletter == 1) { ?>
<input type="radio" name="newsletter" value="1" checked="checked" />
<?php echo $text_yes; ?>
<input type="radio" name="newsletter" value="0" />
<?php echo $text_no; ?>
<?php } else { ?>
<input type="radio" name="newsletter" value="1" />
<?php echo $text_yes; ?>
<input type="radio" name="newsletter" value="0" checked="checked" />
<?php echo $text_no; ?>
<?php } ?></td>
</tr>
</table>
</div>
and put this below
<div class="content">
<span class="required">*</span> <b><?php echo $entry_captcha; ?></b><br />
<?php
require_once('system/recaptchalib.php');
$publickey = "<Your Public Key>"; // you got this from the signup page
echo recaptcha_get_html($publickey);
?>
<span class="error"><?php echo $error_captcha; ?></span>
</div>
Step 3 :
Go to catalog/language/english/account.register.php and find this line
$_['entry_confirm'] = 'Password Confirm:';
and put this below
$_['entry_captcha'] = 'Enter the code in the box below:';
and find this line
$_['error_agree'] = 'Warning: You must agree to the %s!';
and put this below
$_['error_captcha'] = 'The captcha code was entered incorrectly, please try again!';
Step 4 :
Go to catalog/controller/account/register.php and find this line
$this->data['button_continue'] = $this->language->get('button_continue');
and put this line below
$this->data['entry_captcha'] = $this->language->get('entry_captcha');
find this line
if (isset($this->error['zone'])) {
$this->data['error_zone'] = $this->error['zone'];
} else {
$this->data['error_zone'] = '';
}
and put this below
if (isset($this->error['captcha'])) {
$this->data['error_captcha'] = $this->error['captcha'];
} else {
$this->data['error_captcha'] = '';
}
find this line
if (isset($this->request->post['newsletter'])) {
$this->data['newsletter'] = $this->request->post['newsletter'];
} else {
$this->data['newsletter'] = '';
}
and put this below
if (isset($this->request->post['captcha'])) {
$this->data['captcha'] = $this->request->post['captcha'];
} else {
$this->data['captcha'] = '';
}
find this line
private function validate() {
if ((strlen(utf8_decode($this->request->post['firstname'])) < 1) || (strlen(utf8_decode($this->request->post['firstname'])) > 32)) {
$this->error['firstname'] = $this->language->get('error_firstname');
}
and put this below
require_once('system/recaptchalib.php');
$privatekey = "<Private Key>";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
this->error['captcha'] = $this->language->get('error_captcha');
}
That's it. Now you should see the recaptcha captcha in your registration page!
thanks for the recaptchasource code.
ReplyDeleteim going to add to my websites.
regards ^^