Salut,
j'ai un petit souci sur mon formulaire de contact
j'ai insérer une validation Captcha mais même si on la sélectionne pas, l'envoie de mon formulaire s'envoie quand même
Page formulaire
<div class="section-formulaire-contact">
<div class="starter-template">
<?php if(array_key_exists('errors', $_SESSION)): ?>
<div class="alert alert-danger">
<?= implode('<br>', $_SESSION'errors'] );?>
</div>
<?php endif; ?>
<?php if(array_key_exists('success', $_SESSION)): ?>
<div class="alert alert-success">
Votre mail a bien était envoyer.
</div>
<?php endif; ?>
<form action="traitement.php" method="POST">
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label for="inputname">Votre nom et prénom</label> *
<input required type="text" name="name" class="form-control" id="inputname" value="<?= isset($_SESSION'inputs']'name']) ? $_SESSION'inputs']'name']:'' ;?>" style="width: 400px; height: 30px;">
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<div class="champ-droite-2">
<label for="inputemail">Votre email</label> *
<input required type="email" style="width: 300px; height: 30px" name="mail" class="form-control" id="inputemail" value="<?= isset($_SESSION'inputs']'mail']) ? $_SESSION'inputs']'mail']:'' ;?>">
</div>
</div>
</div>
<div class="col-xs-12">
<div class="form-group">
<label for="inputmessage">Votre message</label> *
<textarea required id="inputmessage" class="form-control" name="message" style="width: 875px; height: 125px;"><?= isset($_SESSION'inputs']'name']) ? $_SESSION'inputs']'name']:'' ;?></textarea>
</div>
<div class="g-recaptcha" data-sitekey="ma key"></div>
<br>
<button type="submit" class="btn btn-primary">Envoyer</button>
<button type="reset" class="btn btn-primary"> Recommencer</button>
</div>
</div>
</form>
</div>
page traitement
<?php
$errors = ];
$emails = 'nathan@xxxxx.xxxx'];
if(!array_key_exists('name',$_POST) | $_POST'name'] ==''){
$errors'name'] = "Vous n'avez pas renseigné votre nom.";
}
if(!array_key_exists('mail',$_POST) | $_POST'mail'] =='' || !filter_var($_POST'mail'], FILTER_VALIDATE_EMAIL)){
$errors'mail'] = "Vous n'avez pas renseigné un mail valide.";
}
if(!array_key_exists('message',$_POST) | $_POST'message'] ==''){
$errors'message'] = "Votre message est vide.";
}
session_start();
if(!empty($errors)){
$_SESSION'errors'] =$errors;
$_SESSION'inputs'] =$_POST;
header('Location: contact.php');
}
else{
$_SESSION'success'] = 1;
$message= $_POST'message'];
$headers= 'FROM: '. $_POST'mail'];
mail('xxxx@xxxx.com', 'Demande de renseignements de ' . $_POST'name'], $message, $headers);
header('Location: contact.php');
}
?>
Merci de votre aide
Bonjour,
Vous dites insérer une validation captcha mais à part une div ayant ce nom, il n'y a rien. Il faudrait un input pour insérer sa valeur et un vérification de celle-ci dans le fichier de traitement.
La page en question
http://www.sang-dorthos.com/contact.php
Cordialement
edit : pardon j'avais oublier de poster le script
<script src='https://www.google.com/recaptcha/api.js'></script>
Je pense qu'il manque en test dans la partie de traitement:
Exemple Captcha
En ajoutant ceci et en testant la valeur de $rep devrait corriger le problème.
require_once "recaptchalib.php";
// Register API keys at https://www.google.com/recaptcha/admin
$siteKey = "";
$secret = "";
// reCAPTCHA supported 40+ languages listed here: https://developers.google.com/recaptcha/docs/language
$lang = "en";
// The response from reCAPTCHA
$resp = null;
// The error code from reCAPTCHA, if any
$error = null;
$reCaptcha = new ReCaptcha($secret);
// Was there a reCAPTCHA response?
if ($_POST"g-recaptcha-response"]) {
$resp = $reCaptcha->verifyResponse(
$_SERVER"REMOTE_ADDR"],
$_POST"g-recaptcha-response"]
);
}
J'ai un message d'erreur qui m'indique
Notice: Undefined variable: siteKey in D:\wamp\www\sd21\contact.php on line 83 Call Stack #TimeMemoryFunctionLocation 10.0003255152{main}( )..\contact.php:0 ">
Pourtant la variable siteKey est bien renseigner dans la parti traitement
<?php
require_once "recaptchalib.php";
// Register API keys at https://www.google.com/recaptcha/admin
$siteKey = "6xxxxxxxxxxxxxxx";
$secret = "6xxxxxxxxxxxxxxxx";
// reCAPTCHA supported 40+ languages listed here: https://developers.google.com/recaptcha/docs/language
$lang = "fr";
// The response from reCAPTCHA
$resp = null;
// The error code from reCAPTCHA, if any
$error = null;
$reCaptcha = new ReCaptcha($secret);
// Was there a reCAPTCHA response?
if ($_POST"g-recaptcha-response"]) {
$resp = $reCaptcha->verifyResponse(
$_SERVER"REMOTE_ADDR"],
$_POST"g-recaptcha-response"]
);
} ?>
Quand je l'ajoute
Fatal error: Class 'ReCaptcha' not found in D:\wamp\www\sd21\contact.php on line 15
.................
$reCaptcha = new ReCaptcha($secret);
// Was there a reCAPTCHA response?
if ($_POST"g-recaptcha-response"]) {
$resp = $reCaptcha->verifyResponse(
$_SERVER"REMOTE_ADDR"],
$_POST"g-recaptcha-response"]
);
} ?>
Avez-vous ajouter : require_once "recaptchalib.php"; et l'avez dans le même dossier que contact.php ?