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.
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"]
);
} ?>
Oui, l'erreur vous indique qu'elle est absente du fichier contact.php
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 ?
Oui.