Hola amigos, tengo un detalle con la validación de un formulario de contacto, le agregue el captcha de google pero me da problemas al querer validarlo para que sea requerido, al principio quise validarlo así como lo muestro a continuación pero al realizar mis pruebas mi mensaje se envía sin que yo le de click en el captcha cuando forzosamente debe de pedirme que le de click en el captcha.
<form action="contacto.php" method="post">
<label for="name"></label>
<input class="w-input" type="text" id="name" placeholder="Ingresa tu nombre" name="name" required="required">
<label for="email"></label>
<input class="w-input" placeholder="Ingresa tu correo electrónico" type="text" id="email" name="email" required="required">
<label for="phone"></label>
<input class="w-input" placeholder="Ingresa tu teléfono" type="text" id="phone" name="phone" required="required">
<label for="message"></label>
<textarea class="w-input message" placeholder="Escribe tu mensaje" id="message" name="message" required="required"></textarea><br>
<div class="center">
<!--/////////Captcha/////////-->
<div class="g-recaptcha" data-sitekey="6Ldo_B8UAAAAAFgTDb4ChXhBv6xlVPlYZAnEXCd0" data-theme="dark" align="center"></div>
<!--/////////Captcha/////////-->
</div>
<br>
<input class="button medium" type="submit" value="Enviar">
</form>
-------ARCHIVO DE contacto.php-------
<?php
$nombre = $_POST['name'];
$email = $_POST['email'];
$telefono = $_POST['phone'];
$recaptcha = $_POST['g-recaptcha-response'];
$destinatario = '[email protected]';
$asunto = $_POST['message'];
$mensaje = 'Nombre: ' . $nombre . "\n" . $telefono = 'Telefono: ' . $telefono = $_POST['phone'] . "\n" . 'Mensaje: ' . $_POST['message'];
$cabecera = "From:" . $email. "\r\n" . "Reply-To: " . $email;
if(mail($destinatario, $asunto, $mensaje, $cabecera, $recaptcha != '')){
$secret="6Ldo_B8UAAAAAEy4tSycdIbRdXuDnaoHy1iiUH5a";
$ip = $SERVER['REMOTE_ADDR'];
$var = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$recaptcha&remoteip=$ip");
$array = json_decode($var, true);
$enviado= "Tu mensaje ha sido enviado exitosamente";
if ($array['success']){
echo "soy humano";
}else{
echo "soy un robot";
}
print "<script>alert('$enviado')</script>";
print("<script>window.location.replace('index.html');</script>");
}else{
echo "El mensaje no se pudo enviar;";
}
?>
Después, encontré esta forma de validar mi captcha, como lo muestro a continuación,ya me pide forzosamente el captcha, pero en el action de mi formulario ya no puedo agregar mi archivo contacto.php que es el que contiene la configuración que me envía los mensajes al correo
<form action="**javascript:alert(grecaptcha.getResponse(widgetId1));**">
<label for="name"></label>
<input class="w-input" type="text" id="name" placeholder="Ingresa tu nombre" name="name" required="required">
<label for="email"></label>
<input class="w-input" placeholder="Ingresa tu correo electrónico" type="text" id="email" name="email" required="required">
<label for="phone"></label>
<input class="w-input" placeholder="Ingresa tu teléfono" type="text" id="phone" name="phone" required="required">
<label for="message"></label>
<textarea class="w-input message" placeholder="Escribe tu mensaje" id="message" name="message" required="required"></textarea><br>
<div class="center">
<!--/////////Captcha/////////-->
<div class="g-recaptcha" data-sitekey="6Ldo_B8UAAAAAFgTDb4ChXhBv6xlVPlYZAnEXCd0" data-theme="dark" align="center"></div>
<!--/////////Captcha/////////-->
</div>
<br>
<input class="button medium" type="submit" value="getResponse">
</form>
¿COMO PUEDO HACER QUE MI FORMULARIO ME REALICE AMBAS COSAS, ES DECIR QUE ME VALIDE EL CAPTCHA DE FORMA REQUERIDA Y ME ENVÍE LOS DATOS LLENADOS EN EL FORMULARIO AL CORREO ? AYUDA! PORFAVOR AMIGOS!