Foros del Web » Programando para Internet » PHP »

Formulario de contacto

Estas en el tema de Formulario de contacto en el foro de PHP en Foros del Web. Hola Alguien que me enseñe a hacer un formulario de contacto. Lo he intentado mil veces y no hay manera de que me salga, hasta ...

  #1 (permalink)  
Antiguo 17/08/2005, 22:25
Avatar de RitaBbaa  
Fecha de Ingreso: junio-2004
Ubicación: Islas Canarias. España.
Mensajes: 1.191
Antigüedad: 19 años, 10 meses
Puntos: 8
Formulario de contacto

Hola

Alguien que me enseñe a hacer un formulario de contacto. Lo he intentado mil veces y no hay manera de que me salga, hasta lo intenté en flash y nada.

Espero que alguien me ayude, ya no se que hacer.

saludos.
__________________
La vida es bella.
  #2 (permalink)  
Antiguo 17/08/2005, 22:50
Avatar de leoj90
Usuario baneado!
 
Fecha de Ingreso: agosto-2005
Mensajes: 1.365
Antigüedad: 18 años, 8 meses
Puntos: 0
Este es el codigo php (enviar.php, por ej):
<?

$nombre = $_POST['nombre'];
$comentario = $_POST['comentario'];
$de = $_POST['email'];

mail('[email protected]',$nombre,$comentario,"Fro m:$de"\r\n];

echo "<b>$nombre</b>, tu mail se ha enviado. Gracias"

?>

Y este el q contiene el formulario (form.html, por ej):
<form action="enviar.php" method="post">
Nombre: <input type="text" size="15" name="nombre"><br>
E-Mail: <input type="text" size="15" name="email"><br>
Comentario: <textarea cols="30" rows="4" name="comentario">
</form>

Espero q hayas entendido, sino pregunta otra vez

Última edición por leoj90; 18/08/2005 a las 22:38
  #3 (permalink)  
Antiguo 18/08/2005, 10:18
Avatar de RitaBbaa  
Fecha de Ingreso: junio-2004
Ubicación: Islas Canarias. España.
Mensajes: 1.191
Antigüedad: 19 años, 10 meses
Puntos: 8
Hola

Si, el código php, pero eso en donde se pone?? La verdad es que no tengo la menor idea de como hacerlo. Me he descargado varias tipos de formularios y todos son tan diferentes que no tengo una base de como son.

Eso en que parte se coloca del código? En que tipo de hoja se hace, html, php directamente, cual??

Gracias y perdona la ignorancia.
saludos.
__________________
La vida es bella.
  #4 (permalink)  
Antiguo 18/08/2005, 10:59
Avatar de EternalWitness  
Fecha de Ingreso: agosto-2005
Mensajes: 146
Antigüedad: 18 años, 8 meses
Puntos: 2
el codigo php va en..pues un archivo php (enviar.php en el ejemplo que puso leoj90)
guardas ese como php y el otro codigo(form.html) como html y los pones en el mismo directorio y ya
claro que tu hosting debe contar con php para que funcione
  #5 (permalink)  
Antiguo 18/08/2005, 22:44
Avatar de leoj90
Usuario baneado!
 
Fecha de Ingreso: agosto-2005
Mensajes: 1.365
Antigüedad: 18 años, 8 meses
Puntos: 0
Bueno te explico cada linea q es lo q hace:

Codigo php (enviar.php en el ejemplo:)
<?

$nombre = $_POST['nombre']; /*Aqui recibes el nombre de quien te envia el mail*/
$comentario = $_POST['comentario']; /*Aqui recibes el comentario*/
$de = $_POST['email']; /*Aqui te dice el mail de quien lo envia*/

mail('[email protected]',$nombre,$comentario,"Fro m:$de"\r\n]; /*Aqui escribes tu mail o el mail que reciba este mensaje*/

echo "<b>$nombre</b>, tu mail se ha enviado. Gracias" /*Aqui agradeces con un mensaje, la variable $nombre hace que se escriba el nombre de quien manda el mail*/

?>

Y ya en tu archivo .html configuras dentro de los inputs, el atributo 'name' con valor al que pusiste en el archivo php entre $_POST['']". POr ejemplo: en el campo Nombre el input deberia estar algo asi: <input type="text" name="nombre" size="25">, ya que "nombre" es lo que esta entre ['.......'].
Espero q hayas entendido, sino vuelve a preguntar
  #6 (permalink)  
Antiguo 19/08/2005, 00:24
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 18 años, 8 meses
Puntos: 0
Con este ejemplo de pronto lo entiendes mas facil: El archivo a crear se llamaria envia_form_php.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Mándanos tus comentarios</title>
</head>

<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060">
<?
if (!$HTTP_POST_VARS){
?>
<form action="envia_form_php.php" method=post>
Nombre: <input type=text name="nombre" size=16>
<br>
Email: <input type=text name=email size=16>
<br>
Comentarios: <textarea name=coment cols=32 rows=6></textarea>
<br>
<input type=submit value="Enviar">
</form>
<?
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
$cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "\n";

//mando el correo...
mail("[email protected]","Formulario recibido",$cuerpo);

//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
?>
</body>
</html>

Con este entendi yo!! je!! chaolin!!
  #7 (permalink)  
Antiguo 19/08/2005, 00:26
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 18 años, 8 meses
Puntos: 0
Eso si, tienes que tener una cuenta de hosting de pago, ke soporte PHP. Regularmente las empresas de Free Hosting tienen desactivada la funcion Mail() que es la obviamente manda el email , por eso del spam.

Asi que mejo si tienes una cuenta hosting de pago!!

Chau!
  #8 (permalink)  
Antiguo 19/08/2005, 00:34
Avatar de leoj90
Usuario baneado!
 
Fecha de Ingreso: agosto-2005
Mensajes: 1.365
Antigüedad: 18 años, 8 meses
Puntos: 0
De acuerdo

Mmmm, pues $HTTP_VARS_POST ya no se usan, se usa$ _POST y si es asi q se hace en un solo archivo como dices, en el form la action debe ser: action="<?=$PHP_SELF?>" porq el codigo php esta en el mismo lugar q el formulario,

Última edición por leoj90; 19/08/2005 a las 01:17
  #9 (permalink)  
Antiguo 19/08/2005, 01:33
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 18 años, 8 meses
Puntos: 0
Mmmm, pues asi tal cual como lo postee lo tengo en un website y me funciona perfectamente sin ningun tipo de problema.
  #10 (permalink)  
Antiguo 19/08/2005, 13:16
Avatar de RitaBbaa  
Fecha de Ingreso: junio-2004
Ubicación: Islas Canarias. España.
Mensajes: 1.191
Antigüedad: 19 años, 10 meses
Puntos: 8
Mi hosting soporta php, de hecho hace poco monté un foro y sin problema. Lo que no se si es necesario activar algo además, para poder activar el formulario de contacto que uno suba.

Voy a intentarlo con los ejemplos que me han puesto, cualquier cosa les digo.

Muchas gracias a todos.
saludos.
__________________
La vida es bella.
  #11 (permalink)  
Antiguo 19/08/2005, 14:31
Avatar de leoj90
Usuario baneado!
 
Fecha de Ingreso: agosto-2005
Mensajes: 1.365
Antigüedad: 18 años, 8 meses
Puntos: 0
No, con estar bien el codigo de php y el de html ya es suficiente.
  #12 (permalink)  
Antiguo 19/08/2005, 17:25
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 18 años, 8 meses
Puntos: 0
Exacto, no es necesario activar nada para enviar email con el formulario de contacto, solo que si esta desactivada esta funcion que permite correr el mail(), no te vas a dar cuenta pq regularmente el script corre y no muestra problemas, solo que no manda el email, asi que si lo ejecutas, y no te llego ningun email , debe ser que de pronto tenga la funcion mail () desactivada... pero si tu pagas por tu host NO PROB!!!

Y leoj90 tiene toda la razon, en la parte del script, mas exactamente en esta
<form action="envia_form_php.php" method=post>, ya no se pone el nombre de la pagina sino que se reemplaza por esta funcioncita php action="<?=$PHP_SELF?>"
la otra sino se, no he podido confirmarla, pero me imagino ke tambien ha de tener razon..

Bueno saludos!! y que bueno que todos los dias se aprenda algo nuevo.!
  #13 (permalink)  
Antiguo 20/08/2005, 00:52
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 18 años, 11 meses
Puntos: 0
Haber, el valor de $_SERVER['PHP_SELF'] es el mismo del archivo que se esta ejecutando, la razón de usar eso en vez del nombre del archivo es por si en un futuro cambias el nombre del archivo (o eso creo ) asi ya no tienes que modificar nada de tu codigo.

Lo de $HTTP_POST_VARS[''] se explica aqui

Y aqui esta otra cosa al respecto
http://mx2.php.net/manual/es/security.globals.php

__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #14 (permalink)  
Antiguo 31/08/2005, 09:36
Avatar de romelalgo  
Fecha de Ingreso: febrero-2005
Ubicación: Lima - Perú
Mensajes: 58
Antigüedad: 19 años, 2 meses
Puntos: 1
como hago ahora ?

Yo trabajo en html, como puedo insertar en una web hecha en html este codigo php de la respuesta que dice gracias.
Para mi caso me conviene usar el ejemplo primero de un archivo html y otro php.
Tambien se me habia ocurrido que en vez de pasar a otra web en php, luego de pulsar el boton enviar me abra una ventana javascript pequeña (pop-up) y alli se vea el agradecimiento de esa web en php. como inserto el codigo en la acción enviar??? se puede?
__________________
________________________________________________
ROMELALGO
despeja la bruma, no estas sólo...
MI SPACE
mi website arq-design.net
Cotizaciones a:[email protected]
  #15 (permalink)  
Antiguo 31/08/2005, 12:05
Avatar de leoj90
Usuario baneado!
 
Fecha de Ingreso: agosto-2005
Mensajes: 1.365
Antigüedad: 18 años, 8 meses
Puntos: 0
Lee arriba, no preguntes lo mismo.
  #16 (permalink)  
Antiguo 02/09/2005, 02:52
Dig
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola a todos

Me parece muy interesantes este post y sobre todo la facilidad con que lo habeis explicado todo, con ejemplos y demás. En algunos otros post se echa de menos esta claridad en las explicaciones.

Al respecto de todo lo que comentais me han asaltado dos dudas:

1. Que ventajas tiene usar un formulario en PHP respecto a uno en html, simplemente con un POST y un mailto en la dirección. La maquetacion al recibir el correo?.

2. Si se quiere validar que los campos esten rellenados antes d dejar que el usuario envie el formulario, ¿se hace igual, con un javascript de validación, por ejemplo, o hay que utilizar otros métodos?.

Venga, un saludo a todos
  #17 (permalink)  
Antiguo 02/09/2005, 05:35
 
Fecha de Ingreso: diciembre-2004
Ubicación: Pamplona
Mensajes: 71
Antigüedad: 19 años, 4 meses
Puntos: 0
Al igual que a Dig me ha parecido muy interesante el POST. Sobre las ventajas o inconvenientes del uso de PHP o HTML te diré que no hay uno mejor que otro, son dos cosas distintas. HTML no es un lenguaje de programación sino una forma de presentar información legible por los navegadores y PHP sería una "maquina" que genera documentos HTML.
Para el caso concreto de enviar formualrios te diré que depende, si sólo quieres que se envia via mail con tu solución es más que posible, si quieres que se añada a una base, se confirma, se almacene, se enviens varias copias, etc, deberías usar PHP.
Ya para termianar decir que la actio de form si la dejas en blanco ("") funciona perfectamente. Desde Pamplona para el mundo;

Spielbeg
  #18 (permalink)  
Antiguo 04/09/2005, 04:28
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 18 años, 11 meses
Puntos: 0
Si usas un mailto: se va a abrir el gestor de correo (outllok o el que tengan instalado), con php el encargado de enviar el mail es php(mas bien el servidor smtp, php solo "le pasa" el mensaje al smtp), asi si uno no tiene un gestor de correo de todas formas puede enviar el mail y también se evita lo gorroso que es que se te habra un programa mientras navegas.

La validación del correo lo puedes hacer con javascript (lado cliente) o con php (lado servidor).

Aqui les paso un script de envio de mail un poquillo mejorado.

Código PHP:
<?

/*Función para validar e-mail con Exprexiones Regulares*/
function check_email($email) {
    
//caracteres permitidos en el nombre: 0-9a-Z-._ en el host: 0-9a-Z-. entre los 2: @
    
if (!preg_match('/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/'$email))
        return 
False;

    
//Nombre debe empezar con algún caracter alfanumerico
    
if ( preg_match('/^[^0-9a-zA-Z]|[^0-9a-zA-Z]$/'$email))
        return 
False;

    
//Nombre debe terminar con algún caracter alfanumerico
    
if (!preg_match('/([0-9a-zA-Z_]{1})\@./',$email) )                    
        return 
False;

    
//Host debe empezar con algún caracter alfanumerico
    
if (!preg_match('/.\@([0-9a-zA-Z_]{1})/',$email) )                    
        return 
False;

    
#Par .- or -. or -- or .. no permitidos
    
if ( preg_match('/.\.\-.|.\-\..|.\.\..|.\-\-./',$email) )
        return 
False;

    
#Par ._ or -_ or _. or _- or __ no permitidos
    
if ( preg_match('/.\.\_.|.\-\_.|.\_\..|.\_\-.|.\_\_./',$email) )
        return 
False;

    
#Host debe terminar con '.' más 2-5 alfa para TopLevelDomain
    
if (!preg_match('/\.([a-zA-Z]{2,5})$/',$email) )
        return 
False;

    return 
True;
}
/*Si se le dio al boton submit*/
if (isset($_POST['submit'])) {
//revisa si no estan vacios los campos
  
if (!empty($_POST['para']) && !empty($_POST['de']) &&   !empty($_POST['asunto']) && !empty($_POST['mensaje'])) {
//revisa si el e-mail es valido
    
if (check_email($_POST['para']) && check_email($_POST['de'])) {
//asigno variables para el envio      
$para $_POST['para']
$de $_POST['de'];
$asunto $_POST['asunto'];
$mensaje "$de ($_SERVER['REMOTE_ADDR']) envia el siguiente mensaje \n $_POST['mensaje']";
$headers "From: $de \r\n";
$headers. = "To: $para \r\n";
//envio el mail
      
if (mail($para,$asunto,$mensaje,$headers)) {
//si se pudo enviar
      
echo '<script language="javascript" type="text/javascript">alert ('Gracias por tus comentarios')</script>';
      }else{
//si no se pudo enviar
      
echo '<script language="javascript" type="text/javascript">alert('ErrorEl e-mail no pudo ser enviado')</script>';
      }
    }else{
//si el e-mail no es valido
    
echo '<script language="javascript" type="text/javascript">alert('El e-mail debe se valido')</script>';
    }
  }else{
//si algun campo quedo vacio
  
echo '<script language="javascript" type="text/javascript">Alert('Te falto algo')</script>';
  }
}else{
?>
Aqui va el form con el atributo name correspondiente en cada campo
<?
}?>
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #19 (permalink)  
Antiguo 04/09/2005, 10:37
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 18 años, 8 meses
Puntos: 0
Excelente DvD , bien por ese Dato!!
  #20 (permalink)  
Antiguo 07/09/2005, 16:06
Avatar de RitaBbaa  
Fecha de Ingreso: junio-2004
Ubicación: Islas Canarias. España.
Mensajes: 1.191
Antigüedad: 19 años, 10 meses
Puntos: 8
Creo que mejor lo que voy a hacer es aprender php desde el comienzo, porque la verdad no entiendo nada de nada.

Muchas gracias a todos.
chao.
__________________
La vida es bella.
  #21 (permalink)  
Antiguo 07/09/2005, 17:35
Avatar de arcanis  
Fecha de Ingreso: diciembre-2004
Mensajes: 11
Antigüedad: 19 años, 4 meses
Puntos: 0
DVD me encanta tu script y he intentado usarlo pero me da este error

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /datos/home/galiciat/public_html/tintoreria/mail.php on line 46

Este es el script que uso despues de adaptarlo:

mail.php
Código PHP:
<?php

/*Función para validar e-mail con Exprexiones Regulares*/
function check_email($email) {
    
//caracteres permitidos en el nombre: 0-9a-Z-._ en el host: 0-9a-Z-. entre los 2: @
    
if (!preg_match('/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/'$email))
        return 
False;

    
//Nombre debe empezar con algún caracter alfanumerico
    
if ( preg_match('/^[^0-9a-zA-Z]|[^0-9a-zA-Z]$/'$email))
        return 
False;

    
//Nombre debe terminar con algún caracter alfanumerico
    
if (!preg_match('/([0-9a-zA-Z_]{1})\@./',$email) )                    
        return 
False;

    
//Host debe empezar con algún caracter alfanumerico
    
if (!preg_match('/.\@([0-9a-zA-Z_]{1})/',$email) )                    
        return 
False;

    
#Par .- or -. or -- or .. no permitidos
    
if ( preg_match('/.\.\-.|.\-\..|.\.\..|.\-\-./',$email) )
        return 
False;

    
#Par ._ or -_ or _. or _- or __ no permitidos
    
if ( preg_match('/.\.\_.|.\-\_.|.\_\..|.\_\-.|.\_\_./',$email) )
        return 
False;

    
#Host debe terminar con '.' más 2-5 alfa para TopLevelDomain
    
if (!preg_match('/\.([a-zA-Z]{2,5})$/',$email) )
        return 
False;

    return 
True;
}
/*Si se le dio al boton submit*/
if (isset($_POST['submit'])) {
//revisa si no estan vacios los campos
  
if (!empty($_POST['nombre']) &&   !empty($_POST['asunto']) && !empty($_POST['mensaje'])) {
//revisa si el e-mail es valido
    
if (check_email($_POST['email'])) {
//asigno variables para el envio      
$para "[email protected]";
$email $_POST['email'];
$nombre $_POST['nombre'];
$asunto $_POST['asunto'];
$mensaje="$nombre ($_SERVER['REMOTE_ADDR'])envia el siguiente mensaje \n $_POST['mensaje']";
$headers "From: $nombre \r\n";
$headers. = "To: $para \r\n";
//envio el mail
      
if (mail($para,$asunto,$mensaje,$headers)) {
//si se pudo enviar
      
echo '<script language="javascript" type="text/javascript">alert ('Gracias por tus comentarios')</script>';
      }else{
//si no se pudo enviar
      
echo '<script language="javascript" type="text/javascript">alert('ErrorEl e-mail no pudo ser enviado')</script>';
      }
    }else{
//si el e-mail no es valido
    
echo '<script language="javascript" type="text/javascript">alert('El e-mail debe ser valido')</script>';
    }
  }else{
//si algun campo quedo vacio
  
echo '<script language="javascript" type="text/javascript">Alert('Debes rellenar todos los campos')</script>';
  }
}else{
?>
<form action="<?php $PHP_SELF ?>" method=post>
Nombre: <input type=text name="nombre" size=16>
<br />
Tu Email: <input type=text name="email" size=16>
<br />
Asunto: <input type=text name="asunto" size=16>
<br />
Comentarios: <textarea type=text name="mensaje" cols=32 rows=6></textarea>
<br />
<input type=submit value="Enviar" name="submit">
</form>
Aqui va el form con el atributo name correspondiente en cada campo
<?php
}?>
La linea 46 es la del $mensaje=
  #22 (permalink)  
Antiguo 07/09/2005, 17:56
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
Cita:
Iniciado por arcanis
DVD me encanta tu script y he intentado usarlo pero me da este error

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /datos/home/galiciat/public_html/tintoreria/mail.php on line 46

Este es el script que uso despues de adaptarlo:

mail.php
Código PHP:
<?php

/*Función para validar e-mail con Exprexiones Regulares*/
function check_email($email) {
    
//caracteres permitidos en el nombre: 0-9a-Z-._ en el host: 0-9a-Z-. entre los 2: @
    
if (!preg_match('/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/'$email))
        return 
False;

    
//Nombre debe empezar con algún caracter alfanumerico
    
if ( preg_match('/^[^0-9a-zA-Z]|[^0-9a-zA-Z]$/'$email))
        return 
False;

    
//Nombre debe terminar con algún caracter alfanumerico
    
if (!preg_match('/([0-9a-zA-Z_]{1})\@./',$email) )                    
        return 
False;

    
//Host debe empezar con algún caracter alfanumerico
    
if (!preg_match('/.\@([0-9a-zA-Z_]{1})/',$email) )                    
        return 
False;

    
#Par .- or -. or -- or .. no permitidos
    
if ( preg_match('/.\.\-.|.\-\..|.\.\..|.\-\-./',$email) )
        return 
False;

    
#Par ._ or -_ or _. or _- or __ no permitidos
    
if ( preg_match('/.\.\_.|.\-\_.|.\_\..|.\_\-.|.\_\_./',$email) )
        return 
False;

    
#Host debe terminar con '.' más 2-5 alfa para TopLevelDomain
    
if (!preg_match('/\.([a-zA-Z]{2,5})$/',$email) )
        return 
False;

    return 
True;
}
/*Si se le dio al boton submit*/
if (isset($_POST['submit'])) {
//revisa si no estan vacios los campos
  
if (!empty($_POST['nombre']) &&   !empty($_POST['asunto']) && !empty($_POST['mensaje'])) {
//revisa si el e-mail es valido
    
if (check_email($_POST['email'])) {
//asigno variables para el envio      
$para "[email protected]";
$email $_POST['email'];
$nombre $_POST['nombre'];
$asunto $_POST['asunto'];
$mensaje="$nombre ($_SERVER['REMOTE_ADDR'])envia el siguiente mensaje \n $_POST['mensaje']";
$headers "From: $nombre \r\n";
$headers. = "To: $para \r\n";
//envio el mail
      
if (mail($para,$asunto,$mensaje,$headers)) {
//si se pudo enviar
      
echo '<script language="javascript" type="text/javascript">alert ('Gracias por tus comentarios')</script>';
      }else{
//si no se pudo enviar
      
echo '<script language="javascript" type="text/javascript">alert('ErrorEl e-mail no pudo ser enviado')</script>';
      }
    }else{
//si el e-mail no es valido
    
echo '<script language="javascript" type="text/javascript">alert('El e-mail debe ser valido')</script>';
    }
  }else{
//si algun campo quedo vacio
  
echo '<script language="javascript" type="text/javascript">Alert('Debes rellenar todos los campos')</script>';
  }
}else{
?>
<form action="<?php $PHP_SELF ?>" method=post>
Nombre: <input type=text name="nombre" size=16>
<br />
Tu Email: <input type=text name="email" size=16>
<br />
Asunto: <input type=text name="asunto" size=16>
<br />
Comentarios: <textarea type=text name="mensaje" cols=32 rows=6></textarea>
<br />
<input type=submit value="Enviar" name="submit">
</form>
Aqui va el form con el atributo name correspondiente en cada campo
<?php
}?>
La linea 46 es la del $mensaje=

A ver arcanis, el fallo es el siguiente(creo), esa linea deberia ser:
Código PHP:
$mensaje=$nombre.$_SERVER['REMOTE_ADDR']."envia el siguiente mensaje \n"$_POST['mensaje']; 
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #23 (permalink)  
Antiguo 08/09/2005, 03:27
Avatar de arcanis  
Fecha de Ingreso: diciembre-2004
Mensajes: 11
Antigüedad: 19 años, 4 meses
Puntos: 0
Gracias funciona bien como tu dijiste, aunque he tenido que limpiar mas codigo ahora funciona perfectamente o por lo menos a mi me funciona, lo pongo por si alguien quiere usarlo.

mail.php
Código PHP:
<?php

/*Función para validar e-mail con Exprexiones Regulares*/
function check_email($email) {
    
//caracteres permitidos en el nombre: 0-9a-Z-._ en el host: 0-9a-Z-. entre los 2: @
    
if (!preg_match('/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/'$email))
        return 
False;

    
//Nombre debe empezar con algún caracter alfanumerico
    
if ( preg_match('/^[^0-9a-zA-Z]|[^0-9a-zA-Z]$/'$email))
        return 
False;

    
//Nombre debe terminar con algún caracter alfanumerico
    
if (!preg_match('/([0-9a-zA-Z_]{1})\@./',$email) )                    
        return 
False;

    
//Host debe empezar con algún caracter alfanumerico
    
if (!preg_match('/.\@([0-9a-zA-Z_]{1})/',$email) )                    
        return 
False;

    
#Par .- or -. or -- or .. no permitidos
    
if ( preg_match('/.\.\-.|.\-\..|.\.\..|.\-\-./',$email) )
        return 
False;

    
#Par ._ or -_ or _. or _- or __ no permitidos
    
if ( preg_match('/.\.\_.|.\-\_.|.\_\..|.\_\-.|.\_\_./',$email) )
        return 
False;

    
#Host debe terminar con '.' más 2-5 alfa para TopLevelDomain
    
if (!preg_match('/\.([a-zA-Z]{2,5})$/',$email) )
        return 
False;

    return 
True;
}
/*Si se le dio al boton submit*/
if (isset($_POST['submit'])) {
//revisa si no estan vacios los campos
  
if (!empty($_POST['nombre']) &&   !empty($_POST['asunto']) && !empty($_POST['mensaje'])) {
//revisa si el e-mail es valido
    
if (check_email($_POST['email'])) {
//asigno variables para el envio      
$para "[email protected]";
$email $_POST['email'];
$nombre $_POST['nombre'];
$asunto $_POST['asunto'];
$mensaje="$nombre (".$_SERVER['REMOTE_ADDR'].")envia el siguiente mensaje \n".$_POST['mensaje'];
$headers "From: $nombre \r\n";
$headers.= "To:$para\r\n";
//envio el mail
      
if (mail($para,$asunto,$mensaje,$headers)) {
//si se pudo enviar
      
echo "<script language=\"javascript\" type=\"text/javascript\">alert ('Gracias por tus comentarios')</script>";}
      else{
//si no se pudo enviar
      
echo "<script language=\"javascript\" type=\"text/javascript\">alert('Error: El e-mail no pudo ser enviado')</script>";}
      }
      else{
//si el e-mail no es valido
     
echo "<script language=\"javascript\" type=\"text/javascript\">alert('El e-mail debe ser valido')</script>";}
     
     }else{
//si algun campo quedo vacio
  
echo "<script language=\"javascript\" type=\"text/javascript\">Alert('Debes rellenar todos los campos')</script>";}
  
}else{
?>
<form action="<?php $PHP_SELF ?>" method=post>
Nombre: <input type=text name="nombre" size=16>
<br />
Tu Email: <input type=text name="email" size=16>
<br />
Asunto: <input type=text name="asunto" size=16>
<br />
Comentarios:<br /> <textarea name="mensaje" cols=50 rows=8></textarea>
<br />
<input type=submit value="Enviar" name="submit">
</form>
Aqui va el form con el atributo name correspondiente en cada campo
<?php
}?>
  #24 (permalink)  
Antiguo 09/09/2005, 09:45
Avatar de dennyboy  
Fecha de Ingreso: diciembre-2002
Ubicación: San Diego California
Mensajes: 1.012
Antigüedad: 21 años, 4 meses
Puntos: 5
Gracias por el aporte, lo pruebo en este instante...

Saludos
__________________
A veces soy... a veces quiero ser, pero casi siempre estoy ausente.
  #25 (permalink)  
Antiguo 09/09/2005, 21:55
Avatar de fullmental  
Fecha de Ingreso: octubre-2004
Ubicación: México DF, Xochimilco
Mensajes: 593
Antigüedad: 19 años, 6 meses
Puntos: 3
disculpen mi novates pero que pongo en el action= del form en el script de DvD AdN ?????
  #26 (permalink)  
Antiguo 10/09/2005, 05:43
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
Cita:
Iniciado por fullmental
disculpen mi novates pero que pongo en el action= del form en el script de DvD AdN ?????
Relee el ultimo mensaje de arcanis en el que se encuentra el codigo, debes poner
Código PHP:
<form action="<?php $PHP_SELF ?>" method=post>
con esto llamas al mismo formulario para hacerlo todo en el, otra cosa es que quisieses que el envio se realizase desde otro script.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #27 (permalink)  
Antiguo 12/09/2005, 07:36
Avatar de arcanis  
Fecha de Ingreso: diciembre-2004
Mensajes: 11
Antigüedad: 19 años, 4 meses
Puntos: 0
Despues de haber probado con mas calma el script me he encontrado con un fallito que no se como solucionarlo, el fallo es que despues de haber escrito algo mal la pagina se queda en blanco no te da la opcion de corregir lo que esta mal, si alguien pudiera echar una manito se lo agradeceria.
  #28 (permalink)  
Antiguo 13/09/2005, 10:30
Avatar de RitaBbaa  
Fecha de Ingreso: junio-2004
Ubicación: Islas Canarias. España.
Mensajes: 1.191
Antigüedad: 19 años, 10 meses
Puntos: 8
Hola DennyBoy, ya contesté tu privado.

Un saludo a todos.
Luisa
__________________
La vida es bella.
  #29 (permalink)  
Antiguo 13/09/2005, 12:36
 
Fecha de Ingreso: febrero-2005
Mensajes: 187
Antigüedad: 19 años, 2 meses
Puntos: 2
Si quieren validar los campos de un formulario, les recomiendo un script que encontre muy util, y que pueden implementar en cualquier formulario que deseen, ademas valida formatos de email y campos requeridos he aqui el codigo:


Verifica que algunos o todos los campos de un formulario hayan sido rellenados.

Si encuentra un campo llamado email verifica, además, que la dirección insertada tenga una estructura correcta de email.

No necesita configuración, salvo añadir un * (asterisco) al nombre de aquellos campos que queramos que sean obligados. Los que no lleven el * en el nombre no serán revisados.

Ejemplo: <input type="text" name="Nombre*"> (este campo será obligado)

<input type="text" name="telefono"> (este campo NO será obligado)



<script language="JavaScript">
function verificarFormu(cualo)
{
for(m=0;m<cualo.length;m++)
{
if(cualo.elements[m].name.charAt(cualo.elements[m].name.length-1) == "*")
{
if(cualo.elements[m].value=="")
{
alert("Debe poner un " + cualo.elements[m].name.substring(0,cualo.elements[m].name.length-1))
cualo.elements[m].focus()
return false
break;
}
if(cualo.elements[m].name==email" || cualo.elements[m].name=="email*")
{
pat=/^[\w\_\.çñ]{2,255}@[\w]{2,255}\.[a-z]{1,3}\.?[a-z]{0,3}$/
if(!pat.test(cualo.elements[m].value))
{
alert("Introduzca un E-mail válido")
cualo.elements[m].focus()
return false
}
}
}
else
{ continue; }
}
}
</script>


Y al tag form se le añade

<form name="form1" method="post" action="loquesea" onSubmit="return verificarFormu(this)">
__________________
___________________________
Hosting y Dominios en colombia
Blog de Cubica
  #30 (permalink)  
Antiguo 13/09/2005, 12:38
 
Fecha de Ingreso: febrero-2005
Mensajes: 187
Antigüedad: 19 años, 2 meses
Puntos: 2
El resto lo dejan a php, ya para enviar el correo pueden usar php como lo explican los muchachos anteriormente, que por cierto es algo muy completo.
__________________
___________________________
Hosting y Dominios en colombia
Blog de Cubica
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 21:50.