Bonjour,
Voila je galère...
J'ai suivi le tuto de Grafikart sur recaptcha, tous fonctionne sauf que je peux envoyer mon formulaire sans valider mon captcha.
Je sais pourquoi:
Je n'ai pas de code php concernant le captcha dans mon fichier formulaire...
et comme je suis une bille en php, je ne trouve pas la solution, quelqu'un pourrait m'aider ?
Me donner des pistes?
merci.
voici mes deux pages:
la page index.php ou le fomulaire est:
<?php
require 'recaptcha.php';
$captcha = new Recaptcha('***,'*****');
?>
<!DOCTYPE html>
<html lang=fr>
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="css/animate.css">
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="shortcut icon" href="img/favicon.ico">
<script src="https://www.google.com/recaptcha/api.js"></script>
</head>
<body>
<section id="contact" class="row well wow">
<h2 class="text-center">CONTACT</h2>
<div class="row">
<div class="container">
<?php
require 'recaptcha.php';
$captcha = new Recaptcha('****','****');
if(!empty($_POST))
{
if($captcha->isValid($_POST['g-recaptcha-response']) ===false)
{
?>
<div class="alert alert-danger">Le code captcha ne semble pas valide</div>
<?php
}
else
{
?>
<div class="alert alert-success">Merci pour votre email</div>
<?php
}
}
?>
<form action="#" method="POST">
<div>
<p>message :</p>
<textarea id="txtarea" name="msg"></textarea>
</div>
<?=
$captcha->html();
?>
<button id="btn_form" class="btn pull-right" type="submit">Envoyer</button>
</form>
</div>
</div>
</section>
<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Javascript de Bootstrap -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</body>
</html>
le code de la page recaptcha.php (issu du tuto)
<?php
class recaptcha
{
private $api_secret;
private $api_site;
function __construct($api_site, $api_secret)
{
$this->$api_secret =$api_secret;
$this->$api_site =$api_site;
}
/* Permet de générer le code HTML du Captcha */
public function html()
{
return '<div class="g-recaptcha" data-sitekey="*****"></div>';
}
/* Permet de générer la balise script pour recaptcha */
public function script()
{
return '<script src="https://www.google.com/recaptcha/api.js"></script>';
}
/* Permet de vérifier la réponse donné par le Captcha
@param string $code
@return bool
*/
public function isValid($code, $ip = null)
{
if (empty($code))
{
return false;
}
$params = array ('secret' => $this->api_secret,'response' => $code);
if ($ip)
{
$params['remoteip'] = $ip;
}
$url="https://www.google.com/recaptcha/api/siteverify?" . http_build_query($params);
if(function_exists('curl_version'))
{
$curl = curl_init($url);
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_TIMEOUT,1);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
$response = curl_exec($curl);
}
else
{
$response = file_get_contents($url);
}
if(empty($response) || is_null($response))
{
return false;
}
$json = json_decode($response);
return $json->success;
}
}
?>
et finalement la page appelé pour l'envoi du formulaire par mail
<?php
$mail_destination='XXXX@XXX.com';
$nom=stripslashes($_POST['nom']);
$mail=stripslashes($_POST['mail']);
$msg_formulaire=stripslashes($_POST['msg']);
$sujet="Contact via le formulaire";
$msg_formulaire = "Nom: ".$nom."\n". "Adresse: " . $mail."\n". "Message:" . $msg_formulaire;
mail($mail_destination,$sujet,$msg_formulaire /* ,$header */);
header("Location: index.php");
?>