Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - powazniak

#1
PHP / [AYUDA] Formulario con reCAPTCHA
12 Mayo 2015, 05:03 AM
Agregué recaptcha al formulario, el tema es que cuando uno lo completa me manda un mail con el g-recaptcha-response como si fuera un campo más del formulario.


Este es formulario:

Código (html4strict) [Seleccionar]
<form name="formulario" class="form-horizontal" id="formulario" method="post" action="enviar.php" target="_self" enctype="multipart/form-data">
<div class="form-group">
<label for="nombre" class="col-sm-2 control-label">Nombre</label>
<div class="col-sm-10">
<input type="text" name="nombre" id="nombre" class="form-control" title="Se necesita un nombre" required>
</div>
</div>
<div class="form-group">
<label for="email" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10">
<input type="text" name="email" id="email" class="form-control" pattern="^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" title="mail@ejemplo.com" required>
</div>
</div>
<div class="form-group">
<label for="telefono" class="col-sm-2 control-label">Teléfono</label>
<div class="col-sm-10">
<input type="tel" name="telefono" id="telefono" class="form-control" title="Se necesita un teléfono" required>
</div>
</div>
<div class="form-group">
<label for="asunto" class="col-sm-2 control-label">Asunto</label>
<div class="col-sm-10">
<select name="asunto" id="asunto" class="form-control">
<option>Consulta</option>
<option>Quiero trabajar con ustedes</option>
<option>Otro</option>
</select>
</div>
</div>
<div class="form-group">
<label for="mensaje" class="col-sm-2 control-label">Mensaje</label>
<div class="col-sm-10">
<textarea name="mensaje" cols="50" rows="10" id="mensaje" class="form-control" title="Se necesita un mensaje" required></textarea>
</div>
</div>
<div class="form-group">
<label for="archivo1" class="col-sm-2 control-label">Adjuntar archivo:</label>
<div class="col-sm-10">
<input type="file" name="archivo1" id="archivo1">
<p>Hasta 10 Mb.</p>
</div>
</div>
<div class="form-group">
<div class="col-sm-2"></div>
<div class="col-sm-10 g-recaptcha" data-sitekey="6LdE5AUTAAAasdDkNJ2Rhdfkr0Tmmsxcf6mBwGpSji"></div>
</div>
<input type="submit" class="btn btn-default pull-right" id="enviar" value="Enviar">
</form>


Y este es el archivo enviar.php:
Código (php) [Seleccionar]

<?php
if(isset($_POST['g-recaptcha-response'])) {
   
// RECAPTCHA SETTINGS
   
$captcha $_POST['g-recaptcha-response'];
   
$ip $_SERVER['REMOTE_ADDR'];
   
$key 'xxxx';
   
$url 'https://www.google.com/recaptcha/api/siteverify';

   
// RECAPTCH RESPONSE
   
$recaptcha_response file_get_contents($url.'?secret='.$key.'&response='.$captcha.'&remoteip='.$ip);
   
$data json_decode($recaptcha_response);

   if(isset(
$data->success) &&  $data->success === true) {
   
function form_mail($sPara$sAsunto$sTexto$sDe)
{
$bHayFicheros 0;
$sCabeceraTexto "";
$sAdjuntos "";
 
if ($sDe)$sCabeceras "From:".$sDe."\n";
else $sCabeceras "";
$sCabeceras .= "MIME-version: 1.0\n";
foreach ($_POST as $sNombre => $sValor)
$sTexto $sTexto."\n".$sNombre." = ".$sValor;
 
foreach ($_FILES as $vAdjunto)
{
if ($bHayFicheros == 0)
{
$bHayFicheros 1;
$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
 
$sCabeceraTexto "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
 
$sTexto $sCabeceraTexto.$sTexto;
}
if ($vAdjunto["size"] > 0)
{
$sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
 
$oFichero fopen($vAdjunto["tmp_name"], 'r');
$sContenido fread($oFicherofilesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}
}
 
if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
return(mail($sPara$sAsunto$sTexto$sCabeceras));
}
 
//cambiar aqui el email
if (form_mail("mimail@dominio.com"$_POST[asunto],
"Los datos introducidos en el formulario son:\n\n"$_POST[email]))
header("location: gracias.php");

   }
   else {
      die(
'Tilda la casilla "No soy un robot"');
   }
}
?>




El problema es que cuando uno lo llena, el mail que llega se ve así:

nombre = pablo
email = asd@asd.com
telefono = 123123
asunto = Consulta
mensaje = Prueba
g-recaptcha-response = 03AHJ_Vu9zPe-R0CF_xMr-6MwOQThHHEjdfUohb9xXwSdYOoISWdd1guPHsne3_2tjdu6squ8RWvB_PBS7Abj3B0vmzgHON2cwmZvjpJc4NfJ7gbNDQrbQ7EcVLV4FRc65bZ-oJvnm4MkBW57TD-5-2z-auj1joRcgfsfRTks_yyB7pLUr3I7ZhNP2mBLFurkaJF3l3UzE37s3Gx_TJA3R3dwUlslw99vpo4vDYZ-YPR-FEMSihAKxPYmfc3W60dr7Df0OTfV5ug3V8YUjO2bHNcFobG3PH2bWAvE_tiwI_-nEXxl4Jf67xh69oFbeJFMqDwFC0O9jBySMJZt-exADR73boOIAT3I0wscSlIGOHxRGQA5SmxcIWH0w

Lo que intento lograr es eliminar la parte de g-recaptcha-response del mail.

Alguien tiene idea como lograr esto?

Muchas gracias.

Mod: los códigos deben ir en etiquetas GeSHi
Mod: Private Key cambiado por motivos de seguridad.