Foros del Web » Programando para Internet » PHP »

Problema con formulario

Estas en el tema de Problema con formulario en el foro de PHP en Foros del Web. Buenas, tengo el siguiente código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php function form_mail ( $Para , $Asunto , $Texto , $De ) { $bHayFicheros ...
  #1 (permalink)  
Antiguo 13/06/2011, 03:47
 
Fecha de Ingreso: abril-2011
Mensajes: 85
Antigüedad: 13 años
Puntos: 5
Problema con formulario

Buenas, tengo el siguiente código:

Código PHP:
Ver original
  1. <?php
  2. function form_mail($Para, $Asunto, $Texto, $De)
  3. {
  4. $bHayFicheros = 0;
  5. $CabeceraTexto = "";
  6. $Adjuntos = "";
  7.  
  8. if ($De)$Cabeceras = "From:".$De."\n";
  9. else $Cabeceras = "";
  10. $Cabeceras .= "MIME-version: 1.0\n";
  11. foreach ($_POST as $Nombre => $Valor)
  12. $Texto = $Texto."\n".$Nombre." = ".$Valor;
  13.  
  14. foreach ($_FILES as $vAdjunto)
  15. {
  16. if ($bHayFicheros == 0)
  17. {
  18. $bHayFicheros = 1;
  19. $Cabeceras .= "Content-type: multipart/mixed;";
  20. $Cabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
  21.  
  22. $CabeceraTexto = "----_Separador-de-mensajes_--\n";
  23. $CabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  24. $CabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
  25.  
  26. $Texto = $CabeceraTexto.$Texto;
  27. }
  28. if ($vAdjunto["size"] > 0)
  29. {
  30. $Adjuntos .= "\n\n----_Separador-de-mensajes_--\n";
  31. $Adjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
  32. $Adjuntos .= "Content-Transfer-Encoding: BASE64\n";
  33. $Adjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
  34.  
  35. $oFichero = fopen($vAdjunto["tmp_name"], 'r');
  36. $Contenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
  37. $Adjuntos .= chunk_split(base64_encode($Contenido));
  38. fclose($oFichero);
  39. }
  40. }
  41.  
  42. if ($bHayFicheros)
  43. $Texto .= $Adjuntos."\n\n----_Separador-de-mensajes_----\n";
  44. return(mail($Para, $Asunto, $Texto, $Cabeceras));
  45. }
  46.  
  47. //cambiar aqui el email
  48. if (form_mail("[email protected]", $_POST[asunto],
  49. "Su bandeja de entrada ha recibido uno o varios e-mails:\n\n", $_POST[email]))
  50. echo "form enviado";
  51. ?>

El caso es que todo va bien, se manda correctamente y demás, pero claro... si accedo directamente al archivo PHP desde un servidor se envía un mensaje en blanco... y claro, eso ocasiona muchos mensajes spam... entonces mi pregunta es, como hago que cuando entre a la ruta del archivo PHP no se mande? Simplemente que el archivo se mande si lo llamo desde otro sitio?

Un saludo y gracias

Última edición por jpinedo; 13/06/2011 a las 17:47
  #2 (permalink)  
Antiguo 13/06/2011, 07:46
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Problema con formulario

Una solución fácil es chequear si hay la variable de $para está definida. Si no lo está, redirigís a la página del formulario:

Código PHP:
Ver original
  1. <?php
  2. if(!isset($_REQUEST['destinatario'])){
  3.     header('location:formulario.php');
  4.     die;
  5. }
  6. ?>
__________________
nahueljose.com.ar

Etiquetas: formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:31.