Comunidad de diseño web y desarrollo en internet online

Ayuda con FORMULARIO DE ENVIO DE CORREO.

Citar            
MensajeEscrito el 26 May 2008 05:44 pm
Hola... escribo porque tengo algunas dudas con mi envio de correo....

tengo dos archivos uno llamado contacto.php que contiene un formulario de contacto que envia los parametros:

nombre
email
asunto
mensaje

AL archivo enviar.php cuyo codigo es el siguiente:

Código :

<?php 

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($oFichero, filesize($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 
$recipiente= \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"[email protected]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\";      


if (form_mail($recipiente, $_POST[asunto],  
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"Los datos introducidos en el formulario son:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\", $_POST[email]))
?>


Todo funciona correctamente, agradezco que hayan aportado este código, ya que lo saque de aqui precisamente..... El FOrmulario funciona perfecto.

El problema es:
Que dentro de mi pagina contacto.php ... action= \"enviar.php\" . COMO PUEDO OCULTAR ESTE CODIGO PARA QUE NO SE VEA QUE EL FORMULARIO USA UN ARCHIVO PHP.

Lo que pasa es que cuando alguien ve ese codigo... y en su navegador escribe /dominio/enviar.php . EL CODIGO ME ENVIA UN CORREO VACIO AUTOMATICAMENTE AL CORREO. y quiero evitar eso...

DE QUE MANERA PUEDO HACER QUE CUANDO NO HAY MENSAJE no se envie nada de correo... de manera que cuando alguien escriba dominio/enviar.php ... SIN RECIBIR LOS PARAMETROS ... HACER QUE NO ENVIE EL CORREO.

Notas: En la pagina contacto.php tengo validado que no se envie el formulario con javascript cuando los campos estan vacios o el correo esta escrito de una forma incorrecta. ESO SI ESTA VALIDADO EN contacto.php....

PERO EL PROBLEMA ES CUANDO ABRO DIRECTAMENTE EN MI NAVEGADOR enviar.php .... NO QUIERO QUE ME ENVIE UN CORREO VACIO.

COMO PUEDO EVITAR QUE CUANDO ABRAN DIRECTAMENTE enviar.php... me envie el correo vacio?

Ayuda por favor. Les agradezco de antemano, quizas escribi mucho pero espero haber sido claro.

Un cordial saludo a todos y gracias por sus aportes....

EL codigo del formulario funciona perfectamente sientanse libres de descargarlo y probarlo si les es util, ya que lo tome y modifique de este mismo foro. Gracias !!

Por Crackerness

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 26 May 2008 05:54 pm

Código :

<tr><td>
<?
if (form_mail($recipiente, $_POST[asunto],\"Los datos introducidos en el formulario son:\\n\\n\", $_POST[email]))
echo \"Su formulario fue enviado con éxito, espere un momento mientras es redireccionado a la página principal\"; 
?>   
</td></tr></TABLE>
<script language=\"javascript\"> 
        setTimeout(\"url()\",3000); 
        function url() 
        { 
        location.href = \"../index.php\";
        } 
    </script> 

<?

CREO QUE EL PROBLEMA PUEDE ESTAR AQUI en este codigo que va dentro del BODY de la pagina enviar.php

Pero como programo la linea

Código :

if (form_mail($recipiente, $_POST[asunto],\"Los datos introducidos en el formulario son:\\n\\n\", $_POST[email]))
echo \"Su formulario fue enviado con éxito, espere un momento mientras es redireccionado a la página principal\"; 


Como hacerle ???? para que no envie nada si no ha recibido parametros de contacto.php... si la abren directamente que no se envie nada... ayudenme... gracias

Por Crackerness

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 26 May 2008 06:28 pm

Código :


if ($_POST['submit']) {
  [todo tu codigo de envio de email]
}
else { echo 'Debes completar el formulario'; }



En tu formulario contacto.php, asignale el nombre "submit" al botón de envío (<input type="submit" name="submit" vale="Enviar" />)

Y en enviar.php, corroboras si este botón fué presionado o no mediante if ($_POST['submit'])..

Ya me dices...

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera
Citar            
MensajeEscrito el 26 May 2008 06:59 pm
deberias validar tanto con js como php, sin embargo no creo que tengas usuarios que vean tu codigo y entren a ver que pasa xD

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

opera
Citar            
MensajeEscrito el 26 May 2008 07:06 pm
La solución elegante...

pon al principio de contacto.php:

Código :

if( count((array)$_POST) == 0 )
{
  echo "Move your ass";
}


Además nunca confies en datos del usuario, validalos antes de usarlos. :wink:

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos



Ultima edición por Dano el 26 May 2008 09:36 pm, editado 1 vez

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 26 May 2008 09:20 pm

neohunter escribió:

deberias validar tanto con js como php, sin embargo no creo que tengas usuarios que vean tu codigo y entren a ver que pasa xD


Si la verdad tienes razon... TODOS LOS DATOS ESTAN VALIDADOS....

Y Sinceramente tampoco creo que entren de fisgones a ver que pasa....


Pero pues ya vez..... EL LEON PIENSA QUE TODOS SON DE SU CONDICION....

Eso me pasa por ser algo "entrometido" en los sitios...

Ahora tengo que aguantarme mi propia paranoia de no ser hackeado jajajajajaja.......

Creo que pasa mas por eso.....


Y PARA EL QUE DIJO QUE VALIDARA EN JS ... en realidad no existe problema de ningun tipo con eso... TODO ESTA VALIDADO TANTO EN PHP como en JS....

El unico problema era que si algun HACKER O CRACKER o SCRIPT KIDDIE anda sin que hacer...

EL TEMOR ES QUE PUDIERA USAR MI ARCHIVO .PHP PARA AVENTARME BASURA A MI BANDEJA DE ENTRADA...

Pero como dice el usuario anterior... creo que dudo mucho (por el tipo de sitio que será).... dudo mucho que alguien quiera pegarle usando su BOT de correo.....


Gracias por sus comentarios... y pues dejare la paranoia a un lado... JAjAJAjaJAjA

Por Crackerness

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 26 May 2008 09:35 pm

Dano escribió:

La solución elegante...

pon al principio de contacto.php:

Código :

if( count((array)$_POST) == 0 )
{
  echo "Move your ass";
}


Además nunca confies en datos del usuario, validalos antes de usarlos. :wink:



AjaJAjAAjAJA esta es la respuesta que estaba esperando..... en cuanto a la validacion todo esta perfecto.. no tengo problemas de ningun tipo.....

Lo unico era que al meter la URL directa (EN CASO DE UN BOT O TRAVESURA DE SCRIPT KIDDIE, repito el leon piensa k todos son de su condicion).... era que me pudieran llenar el correo de basura con puros correos de NOBODY jejejejeje....

PERO CON ESTA SOLUCION QUEDA MAS QUE RESUELTO !!!!!!!!!

JAjAJajA exelente maestros gracias por su ayuda !!.....

P.D. Lo que pasa que aun soy novato en PHP y no me se muchas funciones de este tipo. Y punto y aparte, tengo mas talento para destruir que crear (Será por eso el nick de crackerness? jaja No se krean).

TE GANASTE UN 10 MAESTRO CON TU RESPUESTA ELEGANTE. MUCHISIMAS GRACIAS...!!!!!!!!!!

Por Crackerness

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 May 2008 10:34 pm
mmm, no me gusta mucho esa solucion, deberias validar los datos uno por uno en php...

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

opera
Citar            
MensajeEscrito el 27 May 2008 10:37 pm

neohunter escribió:

mmm, no me gusta mucho esa solucion, deberias validar los datos uno por uno en php...


NO LEISTE QUE YA ESTABAN VALIDADOS???....

EL PROBLEMA NO ERA CON LOS DATOS....

Por Crackerness

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 May 2008 11:20 pm
Si por eso, ya estan validados con javascript (de lado cliente), ero si lo que te preocupa es el "hacking" de tu aplicacion deberias tambien validarlos en php.

alguien cree que no deberia hacerlo?

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

opera
Citar            
MensajeEscrito el 27 May 2008 11:21 pm
y... NO TEINES QUE GRITARME!

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

opera
Citar            
MensajeEscrito el 27 May 2008 11:53 pm

neohunter escribió:

y... NO TEINES QUE GRITARME!


perdon.... y si ya estan validados en el lado servidor.. solo que no desplegue el codigo completo jejeje...

Una disculpa publica para ti !..... Un Saludo ... gracias !!

Por Crackerness

5 de clabLevel



 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.