Skip to main content

How To Add Google Captcha in Cakephp




Step 1: First you should do is sign up and register you domain for private and public key.



Step 2: Then download reCAPTCHA PHP library and put recaptchalib.php file on recaptchalib folder on verdors folder like vendors.

Step 3: Put this file in bootstrap.php
 pp/config/bootstrap.php
//--------------for google captcha start here------------//
 Configure::write('recatpch_settings', array(
   'public_key'=>'6Lf-nu8SAAAAAIGBhxpcJGxqI03LSP1vcNtjYGrN ',
'private_key'=>'6Lf-nu8SAAAAAC7tXfYaZi0GDKvD5aa7JO7CNXkB '
 ));
//-----------end here-----------------------------------//


Step 4: Add this to your ctp

Now you have to add script where you have want to add captcha in ctp

<?php echo $this->Html->script('https://www.google.com/recaptcha/api/js/recaptcha_ajax.js');?>

<script>
$(function(){
    Recaptcha.create("<?php echo Configure::read("recatpch_settings.public_key")?>", 'recaptcha_div', {
    theme: "red",
    callback: Recaptcha.focus_response_field});
});
</script>

Step 5: Add this in ctp


<?php echo $this->Form->create('ContactMsg', array('type'=>"file",'inputDefaults' => array('label' => false,'div' => false)));?>
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td width="114" >Full Name :*</td>
        <td width="284" ><?php echo $this->Form->input('name');?></td>
    </tr>
    <tr>
        <td width="114" >Email :*</td>
        <td width="284" ><?php echo $this->Form->input('email');?></td>
    </tr>
    <tr valign="top">
        <td width="114" > </td>
        <td width="284">
            <div id="recaptcha_div"></div>
        </td>
    </tr>
    <tr valign="top">
        <td width="114" > </td>
        <td width="284">
            <?php echo $this->Form->submit('Submit')?>
        </td>
    </tr>
</table>

<?php echo $this->Form->end();?>

Step 6: Add this in controller function

function register()//example
{
App::import('Vendor', 'recaptchalib',array('file' => 'recaptchalib/recaptchalib.php'));   
if (!$resp->is_valid)
{
$this->Session->setFlash('The reCAPTCHA wasn\'t entered correctly. Please, try again.','error');
else 
{
$this->User->create();
if($this->User->save($data))
{
$id = $this->User->getLastInsertId();
$active = '<a href="'.HTTP_ROOT.'homes/activation_link/'.base64_encode(convert_uuencode($id)).'" target="_blank">Click here to confirm your account</a>'; 
$replace = array('{name}','{email}','{username}','{active}','{password}');
$with = array($data['User']['fname'].' '.$data['User']['lname'],$data['User']['email'],$data['User']['username'], $active,$pass);
$this->send_email($replace,$with,'new_registration',NO_REPLY,$data['User']['username'],$data['User']['email']);
$this->Session->setFlash('Registration Successfull. Please check Link in your email to activate your account.','success');
$this->redirect(array('controller'=>'homes','action'=>'index'));
}
}

}

<?php echo $this->Form->create('ContactMsg', array('type'=>"file",'inputDefaults' => array('label' => false,'div' => false)));?>
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td width="114" >Full Name :*</td>
        <td width="284" ><?php echo $this->Form->input('name');?></td>
    </tr>
    <tr>
        <td width="114" >Email :*</td>
        <td width="284" ><?php echo $this->Form->input('email');?></td>
    </tr>
    <tr valign="top">
        <td width="114" >&nbsp;</td>
        <td width="284">
            <div id="recaptcha_div"></div>
        </td>
    </tr>
    <tr valign="top">
        <td width="114" >&nbsp;</td>
        <td width="284">
            <?php echo $this->Form->submit('Submit')?>
        </td>
    </tr>
</table>
<?php echo $this->Form->end();?>
- See more at: http://blog.jambura.com/2013/01/02/use-recaptcha-in-cakephp-app/#sthash.axJCzSCL.dpuf
Now we are going to build simple from to enter name and email
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php echo $this->Form->create('ContactMsg', array('type'=>"file",'inputDefaults' => array('label' => false,'div' => false)));?>
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td width="114" >Full Name :*</td>
        <td width="284" ><?php echo $this->Form->input('name');?></td>
    </tr>
    <tr>
        <td width="114" >Email :*</td>
        <td width="284" ><?php echo $this->Form->input('email');?></td>
    </tr>
    <tr valign="top">
        <td width="114" >&nbsp;</td>
        <td width="284">
            <div id="recaptcha_div"></div>
        </td>
    </tr>
    <tr valign="top">
        <td width="114" >&nbsp;</td>
        <td width="284">
            <?php echo $this->Form->submit('Submit')?>
        </td>
    </tr>
</table>
<?php echo $this->Form->end();?>
- See more at: http://blog.jambura.com/2013/01/02/use-recaptcha-in-cakephp-app/#sthash.axJCzSCL.dpuf
Now we are going to build simple from to enter name and email
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php echo $this->Form->create('ContactMsg', array('type'=>"file",'inputDefaults' => array('label' => false,'div' => false)));?>
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td width="114" >Full Name :*</td>
        <td width="284" ><?php echo $this->Form->input('name');?></td>
    </tr>
    <tr>
        <td width="114" >Email :*</td>
        <td width="284" ><?php echo $this->Form->input('email');?></td>
    </tr>
    <tr valign="top">
        <td width="114" >&nbsp;</td>
        <td width="284">
            <div id="recaptcha_div"></div>
        </td>
    </tr>
    <tr valign="top">
        <td width="114" >&nbsp;</td>
        <td width="284">
            <?php echo $this->Form->submit('Submit')?>
        </td>
    </tr>
</table>
<?php echo $this->Form->end();?>
- See more at: http://blog.jambura.com/2013/01/02/use-recaptcha-in-cakephp-app/#sthash.axJCzSCL.dpuf

Comments

Popular posts from this blog

Generate XML file in Cakephp

Steps to Generate XML file using CakePHP: Step-1 Enable to parse xml extension in config route.php file.     Router::parseExtensions('xml'); Step-2 Add Request Handler Component to the Controller    var $components = array(‘RequestHandler’); Step-3 Add controller Action For XML Generation in Post Controller     function generateXMLFile()     {         if ($this->RequestHandler->isXml()) { // check request type             $this->layout = 'empty'; // create an empty layout in app/views/layouts/empty.ctp              }        }  Add header code in empty layout <?php header('Content-type: text/xml');?> <?php echo $this->Xml->header(); ?> <?php echo $content_for_layout; ?> Step-4 Set up View To generate XML Create xml folder inside Posts vi...

How To Create Shortcodes In WordPress

We can create own shortcode by using its predified hooks add_shortcode( 'hello-world', 'techsudhir_hello_world_shortcode' ); 1. Write the Shortcode Function Write a function with a unique name, which will execute the code you’d like the shortcode to trigger: function techsudhir_hello_world_shortcode() {    return 'Hello world!'; } Example: [hello-world] If we were to use this function normally, it would return Hello world! as a string 2. Shortcode function with parameters function techsudhir_hello_world_shortcode( $atts ) {    $a = shortcode_atts( array(       'name' => 'world'    ), $atts );    return 'Hello ' . $a['name'] . !'; } Example: [hello-world name="Sudhir"] You can also call shortcode function in PHP using do_shortcode function Example: do_shortcode('[hello-world]');

How to replace plain URLs with links

Here we will explain how to replace Urls with links from string Using PHP $string ='Rajiv Uttamchandani is an astrophysicist, human rights activist, and entrepreneur. Academy, a nonprofit organization dedicated to providing a robust technology-centered education program for refugee and displaced youth around the world.  CNN Interview - https://www.youtube.com/watch?v=EtTwGke6Jtg   CNN Interview - https://www.youtube.com/watch?v=g7pRTAppsCc&feature=youtu.be'; $string = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.%-=#]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $string); Using Javascript <script> function linkify(inputText) {     var replacedText, replacePattern1, replacePattern2, replacePattern3;     //URLs starting with http://, https://, or ftp://     replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;     replacedText = inputT...