Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: powazniak en 12 Mayo 2015, 05:03 AM

Título: [AYUDA] Formulario con reCAPTCHA
Publicado por: powazniak en 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.
Título: Re: [AYUDA] Formulario con reCAPTCHA
Publicado por: engel lex en 12 Mayo 2015, 05:28 AM
Código (php) [Seleccionar]
$captcha = $_POST['g-recaptcha-response'];

busca donde se agrega eso, lo quitas y listo
Título: Re: [AYUDA] Formulario con reCAPTCHA
Publicado por: powazniak en 12 Mayo 2015, 05:42 AM
Hola, gracias por tu respuesta.

No entiendo mucho de php, pero por lo que veo no están declarados los campos del formulario en el php, creo que lo que necesito es decirle que mande todos menos ese.

Saludos