Formmail
6 seguidores
Necesito un formulario para que las personas que entren en la web puedan contactar conmigo directamente.
En principio me es diferente en qué lenguaje esté, con tal que me lo expliquéis paso a paso cómo hacerlo funcionar. Ya que no domino todos los lenguajes ;) ...
Un formulario sencillo y eficaz, es lo que se pide ...
gracias de antemano :)
meddle
que lenguaje puedes usar en servidor? ASP¿ PHP? Ninguno?
aloga
meddle
que lenguaje puedes usar en servidor? ASP¿ PHP? Ninguno?
El servidor utiliza PHP, entonces sería un formulario para este lenguaje...
Mind Inc.
mira en esta URL http://www.hotscripts.com/PHP/Scripts_and_Programs/Form_Processors/index.html seguro que encuentras lo que buscas, un saludo
meddle
Lo mas sencillo, nombre, email y texto, y con dos paginas, una que envia y una que recibe. No hay comprobaciones ANTES de enviar el formulario. Se puede hacer mejor pero no mas rapido ;):
CONTENEDOR DEL FORMULARIO:
<code>
<form id="formulari" action="send.php" method="post">
Nombre<br>
<input name="nombre" id="nombre" type="text" size="35"><br>
Correo electrónico<br>
<input name="email" id="email" type="text" size="35"><br>
Texto<br>
<textarea name="texto" id="texto" rows="15" cols="50">Comments</textarea><br>
<input id="reset" type="reset" value=" Borrar "> <input id="enviar" type="submit" value=" Enviar ">
</form>
</code>
PHP:
<code>
<?php
foreach($HTTP_POST_VARS as $key => $val) $$key = $val;
$nuestro="tuyo@tudominio.com";
if ($email != '' && strstr($email,'@') && strstr($email,'.') && $nombre != '' && $texto != '' && $texto != 'Comments') {
// todo ok, igual deberiamos NO permitir codigo html en el mensaje ni en ningun campo.
$texto = strip_tags($texto);
$nombre = strip_tags($nombre);
$email = strip_tags($email);
// enviamos el email a nuestra direccion:
if (mail($nuestro,"Mensaje en GuestBook","NOMBRE: $nombre \nCORREO: $email \nMENSAJE: $texto","From: $nombre <$email>\n"."Reply-To: $email\n"."Content-Type: text/plain; charset=koi8-r\n"."Content-Transfer-Encoding: 8bit\n"."Return-path: $email\n"."X-Mailer: PHP/" . phpversion())){
echo ?email enviado correctamente?;
} else {
?>
<p>
Ha habido algun problema en nuestro servidor enviando el mensaje. Por favor, intente de nuevo
mas tarde. <br /><br />Perdonen las molestias.
</p>
<?
}
}if(!$nombre||!strstr($email,'@') ||!strstr($email,'.')||!$email||!$texto||$texto=='Comments'){ ?>
<p>
No ha llenado todos los campos obligatorios o no ha proporcionado una direccion de correo válida.
Por favor vuelva atras y rellene los campos ?Nombre?, 'Email' y ?Texto? antes de pulsar 'Enviar', gracias.
<br /><br />
Perdonen las molestias.
</p>
<?}
?>
</code>
aloga
meddle te lo has currado bien ... muchisimas gracias por el código ;)
Una pregunta final, ahora creo una página html donde pongo el código del formulario y después creo una página php llamada "send" (según me has puesto en el código) donde pongo el código php.
Y estos dos archivos lo pongo en la misma carpeta no'?
Qué cambios hay que hacer en el código para que funcione todo correcto?
Muchas gracias de antemano...
meddle
esastamente. cambios ninguno, solo la variable $nuestro que debe apuntar a tu email. por lo demas creo que ya esta.
Se puede hacer mejor, como he dicho antes, por ejemplo poniendolo todo en una pagina. Tiene la ventaja de que si alguien no ha llenado todos los campos puedes rellenar los que si han sido contestados a partir de las mismas variables POST enviadas por el formulario. Por cierto, ahora que pienso, si tienes globals off vas a necesitar la siguiente linea al principio del PHP:
<code>foreach($HTTP_POST_VARS as $key => $val) $$key = $val;</code>
Te dejo a ti el ejercicio moral de hacerlo todo en una pagina, pero puedes preguntar si tienes problemas al intentarlo ;)
aloga
Error:
\n"."Reply-To: $email\n"."Content-Type: text/plain; charset=koi8-r\n"."Content-Transfer-Encoding: 8bit\n"."Return-path: $email\n"."X-Mailer: PHP/" . phpversion())){ echo ?email enviado correctamente?; } else { ?>
Ha habido algun problema en nuestro servidor enviando el mensaje. Por favor, intente de nuevo mas tarde.
Perdonen las molestias.
No ha llenado todos los campos obligatorios o no ha proporcionado una direccion de correo válida. Por favor vuelva atras y rellene los campos ?Nombre?, 'Email' y ?Texto? antes de pulsar 'Enviar', gracias.
Perdonen las molestias.
[/code]
....jo :|
Varias preguntas:
1) Por qué pasa esto?
2) En el código del formulario pone "formulari" en vez de formulario, esta bien o no?
3)Al final del código del php pone "[/code]" ... sobra esto o no?
meddle
perdona,
1) todavia no lo se.
2) eso no importa en este caso, puedes ponerle el nombre que te parezca
3) si, el [/code] sobra. prueba a quitarlo y luego me cuentas.
4) añade la linea que he puesto despues, ahora tambien la he añadido al codigo de arriba.
aloga
He añadido la línea, he quitado lo de [/code] y ahora me da este error:
$val) $$key = $val; $nuestro="info@alogadesign.com"; if ($email != '' && strstr($email,'@') && strstr($email,'.') && $nombre != '' && $texto != '' && $texto != 'Comments') { // todo ok, igual deberiamos NO permitir codigo html en el mensaje ni en ningun campo. $texto = strip_tags($texto); $nombre = strip_tags($nombre); $email = strip_tags($email); // enviamos el email a nuestra direccion: if (mail($nuestro,"Mensaje en GuestBook","NOMBRE: $nombre \nCORREO: $email \nMENSAJE: $texto","From: $nombre <$email>\n"."Reply-To: $email\n"."Content-Type: text/plain; charset=koi8-r\n"."Content-Transfer-Encoding: 8bit\n"."Return-path: $email\n"."X-Mailer: PHP/" . phpversion())){ echo ?email enviado correctamente?; } else { ?>
... qué puede estar mal?
joshuatree
aloga, tengo uno muuuy sencillito en php q hace las cosas perfectamente bien. Y es muy facil de usar, como q no se casi nada de php, pero me las apaño de lujo con el
A ver, pon un mail asi t lo envio, vale?
aloga
joshuatree aquí tienes el email: info@alogadesign.com
Gracias por el código ;)
Surt
Yo encontre el formmail.php buscando en google. Es la version php del codigo formmail para enviar correo tras un formulario.
En el formulario boton enviar la accion es ir a formmail y el recoge todas las variables, luego tienes la opcion de mostrarlas del modo que te guste.
En cualquier caso lo mas sencillito es lo que dijo meddle, aunque con eso no compruebas que cualquiera pueda enviar correo usando tu formulario, ten eso en cuenta. Si yo me hago ahora un formulario y hago que este llame a tu fichero pues... estoy usando tu servicio, , por otro lado es conveniente (si son datos privados) que ejecutes todo eso en tu directorio seguro, poniendo https:// en la direccion.
meddle
buen detalle a tener en cuenta Erik, lo aplicare en mis scripts ipsofacto
Surt
Hay varios muy completitos en Sourceforge.net:
este es uno:
http://sourceforge.net/projects/phpformmail/
aloga
Muchas gracias a todos por vuestra ayuda, ya tengo el formmail que quería!!
Gracias a surt (por el enlace), meddle (por el curro del código),joshuatree(por tu formmail) y a mind.inc (por el enlace). :D
meddle
de nada. postea tu codigo aqui, anda, asi los demas tambien aprenderemos algo.
saludos
aloga
Hay que os dejo el código de las páginas (estos códigos gracias a joshuatree) :
estilos.css
a.linksbarranavegacion { font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; color: #CC0000; text-decoration: none}
a.linksbarranavegacion:hover { color: #FF9900; text-decoration: none}
h1 {
font-family: Arial, Helvetica, sans-serif;
font-size: 18px;
font-weight: normal;
color: #FFFFFF;
margin-top: 0px;
margin-bottom: 0px;
}
p {
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
letter-spacing: 0.05em;
}
h3 {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #CC0000;
margin-bottom: 4px;
line-height: normal;
}
h4 {
font-family: "Trebuchet MS", Verdana, Arial, sans-serif;
font-size: 12px;
font-weight: bold;
color: #000000;
letter-spacing: 1px;
margin-top: 0px;
margin-bottom: 0px;
}
.justificado {
text-align: justify;
padding-right: 10px;
padding-left: 10px;
}
li {
font-family: "Trebuchet MS", Verdana, Arial, sans-serif;
font-size: 11px;
list-style-image: url(../../../../Codigos/Formmail%20DMSTK/imgs/flecha_listado.gif);
list-style-position: outside;
}
.minitexto { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; font-weight: bold}
input {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
border: 1px solid #999999;
line-height: normal;
}
textarea {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
border: 1px solid #999999;
}
a.linknoticias {
font-family: "Trebuchet MS", Verdana, Arial, sans-serif;
font-size: 11px;
color: #000000;
text-decoration: none;
}
a.linknoticias:hover {
color: #FF0000;
text-decoration: none;
}
a.linksubproductos {
font-family: "Trebuchet MS", Verdana, Arial, sans-serif;
font-size: 11px;
font-weight: bold;
color: #FFFFFF;
text-decoration: none;
}
a.linksubproductos:hover {
color: #0099FF;
text-decoration: none;
}
ul {
margin-left: 18px;
}
h2 {
font-family: Arial, Helvetica, sans-serif;
font-size: 18px;
font-weight: normal;
color: #CC0000;
margin-top: 0px;
margin-bottom: 0px;
}
hr {
border: 1px dotted #CCCCCC;
}
a.linksdescripcion {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
text-decoration: none;
color: #000000;
}
a.linksdescripcion:hover {
color: #CC0000;
text-decoration: underline;
}
.borde1pxpad6px {
margin: 6px;
border: 1px solid #999900;
}
.1pxbordegris {
border: 1px #CCCCCC solid;
}
.pie {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
color: #666666;
}
a.minilinks {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 9px;
color: #CC0000;
text-decoration: none;
}
a.minilinks:hover {
color: #9900CC;
text-decoration: none;
}
form.php
<?php
$diahoy=getdate();
$fecha=DATE("d M Y");
$AdminMessage = "Mensaje enviado el día: $fecha \n";
$AdminMessage = "DATOS DE FACTURACION\n";
$AdminMessage .= "Empresa: $empresa\n";
$AdminMessage .= "Nro. de NIF/CIF: $nif_cif\n";
$AdminMessage .= "Persona de contacto: $personacontacto\n";
$AdminMessage .= "E-mail: $email\n";
$AdminMessage .= "Dirección: $direccion\n";
$AdminMessage .= "Código Postal: $codpostal\n";
$AdminMessage .= "Localidad: $localidad\n";
$AdminMessage .= "Provincia: $provincia\n";
$AdminMessage .= "Teléfono: $telefono\n";
$AdminMessage .= "Fax: $fax\n";
if($transfer){ $AdminMessage .= "Pagaré mediante transferencia bancaria\n";}
if($contrareemb){ $AdminMessage .= "Pagaré mediante contrarreembolso\n";}
if($datosfacturaiguales){ $AdminMessage .= "Mis datos de facturación coinciden con los de envío\n";}
$AdminMessage .= "Dirección de envío: $direccion_envio\n";
$AdminMessage .= "Código postal de envío: $codpostal_envio\n";
$AdminMessage .= "Localidad de envío: $localidad_envio\n";
$AdminMessage .= "Provincia de envío: $provincia_envio\n";
mail("tunombre@dominio.com", "DATOS FACTURACION", $AdminMessage, "From: $email");
?>
<HTML>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=gracias.html">
</HTML>
*Cambiar tunombre@dominio.com por tu correo donde quiera que te llegue.
gracias.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gracias</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="estilos.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="450" border="0" align="center" cellpadding="0" cellspacing="0" class="1pxbordegris">
<tr>
<td width="470" height="60" align="center" valign="middle">
<h3>Sus datos han sido enviados
correctamente.<br>
Gracias por contactar con nosotros</h3></td>
</tr>
</table>
</body>
</html>
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Formulario</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' debe contener una dirección de correo electrónico válida\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' debe contener un número válido.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' debe contener un número válido entre '+min+' y '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' debe ser completado.\n'; }
} if (errors) alert('Por favor, revise los siguientes campos del formulario:\n'+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>
<link href="estilos.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="facturacion" method="post" action="form.php" onSubmit="MM_validateForm('nif_cif','','R','personacontacto','','R','email',
'','RisEmail','codpostal','','NisNum','codigopostal_envio','','NisNum');return document.MM_returnValue">
<table width="450" height="0%" border="0" align="center" cellpadding="6" cellspacing="0" class="1pxbordegris">
<tr>
<td width="448" height="100%" align="left" valign="top">
<h2>Datos Facturaci&oacute;n</h2>
<p>Por favor, complete el formulario que aparece a continuaci&oacute;n
y pulse en el boton ENVIAR.<br>
NOTA: Los campos marcados con asterisco<font face="Times New Roman, Times, serif" size="4" color="#ff0000">
<strong>(</strong><strong>*)</strong></font> son obligatorios</p>
<table cellspacing=1 cellpadding=6 width="80%" align=center border=0>
<tbody>
<tr>
<td valign=center align=right width="40%"> <p>Empresa</p></td>
<td valign=center align=left width="60%"><label>
<input id=empresa size=30
name=empresa class="camposform">
<font face="Times New Roman, Times, serif" color=#ff0000
size=4></font></label></td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Nro. de NIF/CIF</p></td>
<td valign=center align=left width="60%"> <input id=nif_cif size=30
name=nif_cif class="camposform"> <font face="Times New Roman, Times, serif"
color=#ff0000 size=4><strong>*</strong></font> </td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Persona de contacto</p></td>
<td valign=center align=left width="60%"> <input id=personacontacto size=30
name=personacontacto class="camposform"> <font face="Times New Roman, Times, serif"
color=#ff0000 size=4><strong>*</strong></font></td>
</tr>
<tr>
<td valign=center align=right><p>E-mail</p></td>
<td valign=center align=left><input id=email size=30
name=email class="camposform"> <font face="Times New Roman, Times, serif" color=#ff0000
size=4><strong>*</strong></font></td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Dirección</p></td>
<td valign=center align=left width="60%"> <input id=direccion size=30
name=direccion class="camposform"> </td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Código Postal</p></td>
<td valign=center align=left width="60%"> <input id=codpostal size=5
name=codpostal class="camposform" maxlength="5"> </td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Localidad</p></td>
<td valign=center align=left width="60%"> <input id=localidad size=30
name=localidad class="camposform"> </td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Provincia</p></td>
<td valign=center align=left width="60%"> <input id=provincia size=30
name=provincia class="camposform"> </td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Teléfono</p></td>
<td valign=center align=left width="60%"> <input id=telefono size=30
name=telefono class="camposform"> </td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Fax</p></td>
<td valign=center align=left width="60%"> <input id=fax size=30
name=fax class="camposform"> </td>
</tr>
<tr>
<td valign=center align=right> <input type="radio" name="transfer" value="transfer">
</td>
<td valign=center align=left><p>PAGARE MEDIANTE<strong> <font color="#FF0000"><br>
TRANSFERENCIA BANCARIA</font></strong></p></td>
</tr>
<tr>
<td valign=center align=right> <input type="radio" name="contrareemb" value="contrareemb">
</td>
<td valign=center align=left><p>PAGARE MEDIANTE<strong> <font color="#FF0000">CONTRARREEMBOLSO</font></strong></p></td>
</tr>
</tbody>
</table>
&nbsp;&nbsp;<br> <h3>Datos de env&iacute;o</h3>
<p>Si sus datos de facturaci&oacute;n son los mismos que los de env&iacute;o,
marque la casilla de verificaci&oacute;n que se encuentra bajo estas
l&iacute;neas, sin rellenar los campos que aparecen a continuaci&oacute;n.
</p>
<p>Si sus datos de env&iacute;o son distintos, deje la casilla de verificaci&oacute;n
sin marcar y complete los campos.</p>
<table cellspacing=1 cellpadding=6 width="80%" align=center border=0>
<tbody>
<tr>
<td valign=center align=right><input name="datosfacturaiguales" type="checkbox" id="datosfacturaiguales" value="datosfacturaiguales"></td>
<td valign=center align=left><p>Mis datos de facturaci&oacute;n
coinciden con los de env&iacute;o</p></td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Direcci&oacute;n</p></td>
<td valign=center align=left width="60%"><label>
<input id=direccion_envio size=30
name=direccion_envio class="camposform">
<font face="Times New Roman, Times, serif" color=#ff0000
size=4></font></label></td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>C&oacute;digo postal</p></td>
<td valign=center align=left width="60%"> <input
name=codpostal_envio class="camposform" id=codpostal_envio size=5 maxlength="5">
<font face="Times New Roman, Times, serif" color=#ff0000
size=4>&nbsp;</font></td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Localidad</p></td>
<td valign=center align=left width="60%"> <input id=localidad_envio size=30
name=localidad_envio class="camposform"> <font face="Times New Roman, Times, serif"
color=#ff0000 size=4>&nbsp;</font></td>
</tr>
<tr>
<td valign=center align=right width="40%"> <p>Provincia</p></td>
<td valign=center align=left width="60%"> <input id=provincia_envio size=30
name=provincia_envio class="camposform"> <font face="Times New Roman, Times, serif"
color=#ff0000 size=4>&nbsp;</font></td>
</tr>
<tr>
<td valign=center align=right width="40%">&nbsp;</td>
<td valign=center align=left width="60%"> <input type="submit" name="Submit" value="Enviar">
<input type="reset" name="reset" value="borrar campos"> </td>
</tr>
</tbody>
</table></td>
</tr>
</table>
</form></body>
</html>
Esto es todo, tan solo modificar el email que os indico en negrita y cambiar los campos del formulario :)
Y con esto ya funciona....
helviox
Hola a todos, :shock:
Ando todavía muy pez en PHP y estoy liado con el formulario que expuso meddle. He intentado cambiar el mensaje de éxito por una página pero me da el siguiente error:
<code>Parse error: parse error in /webdata/xxx/xxx/send.php on line 38</code>
Os expongo el código entero, por si os ayuda.
<code><?php
foreach($HTTP_POST_VARS as $key => $val) $$key = $val;
$nuestro="correo@dominio.com";
if ($email != '' && strstr($email,'@') && strstr($email,'.') && $nombre != '' && $texto != '' && $texto != 'Comments') {
// todo ok, igual deberiamos NO permitir codigo html en el mensaje ni en ningun campo.
$texto = strip_tags($texto);
$nombre = strip_tags($nombre);
$email = strip_tags($email);
// enviamos el email a nuestra direccion:
if (!mail($nuestro,"Mensaje desde SpainProperty.com","NOMBRE: $nombre \nCORREO: $email \nMENSAJE: $texto","From: $nombre <$email>\n"."Reply-To: $email\n"."Content-Type: text/plain; charset=koi8-r\n"."Content-Transfer-Encoding: 8bit\n"."Return-path: $email\n"."X-Mailer: PHP/" . phpversion())){
?>
<link href="spainproperty.css" rel="stylesheet" type="text/css">
<p class="menu">
Ha habido algun problema en nuestro servidor enviando el mensaje. Por favor, intente de nuevo
mas tarde. <br /><br />Perdonen las molestias.
</p>
<?
}
}if(!$nombre||!strstr($email,'@') ||!strstr($email,'.')||!$email||!$texto||$texto=='Comments'){ ?>
<p class="menu">
No ha llenado todos los campos obligatorios o no ha proporcionado una direccion de correo válida.
Por favor vuelva atras y rellene los campos ?Nombre?, 'Email' y ?Texto? antes de pulsar 'Enviar', gracias.
<br />
<br />
Perdonen las molestias.
</p>
<?
} else {
header("location: success.php")
}
?></code>
Gracias :D