par
Lium » 30 mai 2016, 19:51
Bonjour à tous et à toutes,
j'ai un problème que j'essaie de résoudre depuis deux jours malheureusement sans grand succès...
Je tente d'inclure dans une page Web HTML le reCaptcha:
voici le code HTML du formulaire:
Code : Tout sélectionner
<form name="feedback_form" method="post" class="feedback_form">
<input type="text" name="field-name" value="Name" title="Name" class="field-name form_field">
<div class="clear"></div>
<input type="text" name="field-email" value="Email" title="Email" class="field-email form_field">
<div class="clear"></div>
<input type="text" name="field-subject" value="Subject" title="Subject" class="field-subject form_field">
<div class="clear"></div>
<textarea name="field-message" cols="45" rows="5" title="Message" class="field-message form_field">Message</textarea>
<div class="clear"></div>
<input type="reset" name="reset" id="reset2" value="Clear form" class="feedback_reset">
<input type="button" name="submit" class="feedback_go" id="submit2" value="Send Message!">
<div class="ajaxanswer"></div>
<div class="g-recaptcha" data-sitekey="SECRET"></div>
</form>
un formulaire très simple, bien entendu j'ai ajouté:
Code : Tout sélectionner
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
maintenant là où ça devient impossible la partie PHP.
Voici le code qui est appelé pour envoyer le mail:
Code : Tout sélectionner
<?php
header('Content-Type: text/html; charset=utf-8');
function sendFeedback($feedback_email, $feedback_msg, $feedback_name, $feedback_subject) {
$admin_email = "MON MAIL";
if ($feedback_subject == "Subject" || empty($feedback_subject) ) {
$subj = "Email from your site";
} else {
$subj = $feedback_subject;
}
$message = "
<html>
<head>
<title>Email from your site</title>
</head>
<body>
<p><a href='mailto:".$feedback_email."'>".$feedback_name."</a> send this message:</p>
<p>".$feedback_msg."</p>
<p>".$subject."</p>
</body>
</html>
";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
if ($feedback_name!=="Name" && $feedback_email!=="Email" && !empty($feedback_email) && !empty($feedback_msg) && !empty($feedback_name) ) {
if ($feedback_email == "mail_error") {
echo "<span class='ajaxok'>Invalid email address.</span>";
} else {
mail($admin_email, $subj, $message, $headers);
echo "<span class='ajaxok'>Thank You! Your message has been sent.</span>";
}
} else {
echo "<span class='ajaxalert'>Please fill the required field.</span>";
}
}
sendFeedback($_POST['email'], $_POST['message'], $_POST['name'], $_POST['subject']);
?>
D'après la documentation de Google il faut utiliser POST pour récupérer la clé et la comparer avec celle de Google...
J'ai vraiment besoin d'aide j'espère que parmi vous je trouverais la réponse à ma question.
Merci à tous et à toutes.
PS.
Le script PHP de check devrait ressembler à quelque chose comme ceci:
Code : Tout sélectionner
<?php
$email;$comment;$captcha;
if(isset($_POST['email'])){
$email=$_POST['email'];
}if(isset($_POST['comment'])){
$email=$_POST['comment'];
}if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
if(!$captcha){
echo '<h2>Please check the the captcha form.</h2>';
exit;
}
$secretKey = "Put your secret key here";
$ip = $_SERVER['REMOTE_ADDR'];
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
$responseKeys = json_decode($response,true);
if(intval($responseKeys["success"]) !== 1) {
echo '<h2>You are spammer ! Get the @$%K out</h2>';
} else {
echo '<h2>Thanks for posting comment.</h2>';
}
?>
Bonjour à tous et à toutes,
j'ai un problème que j'essaie de résoudre depuis deux jours malheureusement sans grand succès...
Je tente d'inclure dans une page Web HTML le reCaptcha:
voici le code HTML du formulaire:
[code]
<form name="feedback_form" method="post" class="feedback_form">
<input type="text" name="field-name" value="Name" title="Name" class="field-name form_field">
<div class="clear"></div>
<input type="text" name="field-email" value="Email" title="Email" class="field-email form_field">
<div class="clear"></div>
<input type="text" name="field-subject" value="Subject" title="Subject" class="field-subject form_field">
<div class="clear"></div>
<textarea name="field-message" cols="45" rows="5" title="Message" class="field-message form_field">Message</textarea>
<div class="clear"></div>
<input type="reset" name="reset" id="reset2" value="Clear form" class="feedback_reset">
<input type="button" name="submit" class="feedback_go" id="submit2" value="Send Message!">
<div class="ajaxanswer"></div>
<div class="g-recaptcha" data-sitekey="SECRET"></div>
</form>
[/code]
un formulaire très simple, bien entendu j'ai ajouté:
[code]
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
[/code]
maintenant là où ça devient impossible la partie PHP.
Voici le code qui est appelé pour envoyer le mail:
[code]
<?php
header('Content-Type: text/html; charset=utf-8');
function sendFeedback($feedback_email, $feedback_msg, $feedback_name, $feedback_subject) {
$admin_email = "MON MAIL";
if ($feedback_subject == "Subject" || empty($feedback_subject) ) {
$subj = "Email from your site";
} else {
$subj = $feedback_subject;
}
$message = "
<html>
<head>
<title>Email from your site</title>
</head>
<body>
<p><a href='mailto:".$feedback_email."'>".$feedback_name."</a> send this message:</p>
<p>".$feedback_msg."</p>
<p>".$subject."</p>
</body>
</html>
";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
if ($feedback_name!=="Name" && $feedback_email!=="Email" && !empty($feedback_email) && !empty($feedback_msg) && !empty($feedback_name) ) {
if ($feedback_email == "mail_error") {
echo "<span class='ajaxok'>Invalid email address.</span>";
} else {
mail($admin_email, $subj, $message, $headers);
echo "<span class='ajaxok'>Thank You! Your message has been sent.</span>";
}
} else {
echo "<span class='ajaxalert'>Please fill the required field.</span>";
}
}
sendFeedback($_POST['email'], $_POST['message'], $_POST['name'], $_POST['subject']);
?>
[/code]
D'après la documentation de Google il faut utiliser POST pour récupérer la clé et la comparer avec celle de Google...
J'ai vraiment besoin d'aide j'espère que parmi vous je trouverais la réponse à ma question.
Merci à tous et à toutes. :cry:
PS.
Le script PHP de check devrait ressembler à quelque chose comme ceci:
[code]
<?php
$email;$comment;$captcha;
if(isset($_POST['email'])){
$email=$_POST['email'];
}if(isset($_POST['comment'])){
$email=$_POST['comment'];
}if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
if(!$captcha){
echo '<h2>Please check the the captcha form.</h2>';
exit;
}
$secretKey = "Put your secret key here";
$ip = $_SERVER['REMOTE_ADDR'];
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
$responseKeys = json_decode($response,true);
if(intval($responseKeys["success"]) !== 1) {
echo '<h2>You are spammer ! Get the @$%K out</h2>';
} else {
echo '<h2>Thanks for posting comment.</h2>';
}
?>
[/code]