Showing posts with label cakephp. Show all posts
Showing posts with label cakephp. Show all posts

Tuesday, January 31, 2017

google recaptcha in cakephp

For google recaptcha at first register your site at this link: https://www.google.com/recaptcha/admin

Enter your site details. if you have to use on local machine then enter domain name and lable as 'localhost'.
In controller

    function recaptcha(){
    if(isset($_POST['submit'])){
        if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])){
            //your site secret key
            $secret = '6LfR2xMUAAAAAJ9EvvLrA5mQUqZ77owaFQ3RVvou';
            //get verify response data
            $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
            $responseData = json_decode($verifyResponse);
         
            $name = !empty($_POST['name'])?$_POST['name']:'';
            $email = !empty($_POST['email'])?$_POST['email']:'';
            $message = !empty($_POST['message'])?$_POST['message']:'';
            if($responseData->success){
                //contact form submission code
                $to = 'gautam8953@gmail.com';
                $subject = 'New contact form have been submitted';
                $htmlContent = "
                    <h1>Contact request details</h1>
                    <p><b>Name: </b>".$name."</p>
                    <p><b>Email: </b>".$email."</p>
                    <p><b>Message: </b>".$message."</p>
                ";
                // Always set content-type when sending HTML email
                $headers = "MIME-Version: 1.0" . "\r\n";
                $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
                // More headers
                $headers .= 'From:'.$name.' <'.$email.'>' . "\r\n";
                //send email

                @mail($to,$subject,$htmlContent,$headers);
             
                $succMsg = 'Your contact request have submitted successfully.';
                $name = '';
                $email = '';
                $message = '';
                $errMsg = '';
            }else{
                $errMsg = 'Robot verification failed, please try again.';
                $succMsg = '';
                $this->set('name',$name);
                $this->set('email',$email);
                $this->set('message',$message);
            }
        }else{
            $errMsg = 'Please click on the reCAPTCHA box.';
            $succMsg = '';
            $this->set('name',$name);
            $this->set('email',$email);
            $this->set('message',$message);
        }
    }else{
        $errMsg = '';
        $succMsg = '';
        $name = '';
        $email = '';
        $message = '';
    }
    $this->set('errMsg',$errMsg);
    $this->set('succMsg',$succMsg);
    }

in view recaptcha.ctp
<script src="https://www.google.com/recaptcha/api.js" async defer></script>

    <div class="registration">
<h2>Contact Form</h2>
        <?php if(!empty($errMsg)): ?><div class="errMsg"><?php echo $errMsg; ?></div><?php endif; ?>
        <?php if(!empty($succMsg)): ?><div class="succMsg"><?php echo $succMsg; ?></div><?php endif; ?>
<div class="form-info">
<form action="" method="POST">
<input type="text" class="text" value="<?php echo !empty($name)?$name:''; ?>" placeholder="Your full name" name="name" >
                <input type="text" class="text" value="<?php echo !empty($email)?$email:''; ?>" placeholder="Email adress" name="email" >
                <textarea type="text" placeholder="Message..." required="" name="message"><?php echo !empty($message)?$message:''; ?></textarea>
<div class="g-recaptcha" data-sitekey="6LfR2xMUAAAAABBy2TBrBKur0_L23TizUGR-M20s"></div>
<input type="submit" name="submit" value="SUBMIT">
</form>
</div>
<div class="clear"> </div>
</div>